Windows图形界面(GUI)-QT-C/C++ - QT 文本编辑控件详解

目录

概述

[1. QLineEdit](#1. QLineEdit)

[1.1 特点](#1.1 特点)

[1.2 属性](#1.2 属性)

[1.3 常用方法](#1.3 常用方法)

[1.4 拓展应用](#1.4 拓展应用)

[2. QTextEdit](#2. QTextEdit)

[2.1 特点](#2.1 特点)

[2.2 属性](#2.2 属性)

[2.3 常用方法](#2.3 常用方法)

[2.4 拓展应用](#2.4 拓展应用)

[3. QPlainTextEdit](#3. QPlainTextEdit)

[3.1 特点](#3.1 特点)

[3.2 属性](#3.2 属性)

[3.3 常用方法](#3.3 常用方法)


概述

在 QT 中,文本编辑控件是用户界面设计中不可或缺的一部分。

QT 提供了多种文本编辑控件,包括 QLineEditQTextEditQPlainTextEdit,每种控件都有其特定的用途和功能。

1. QLineEdit

1.1 特点

QLineEdit 是一个单行文本输入控件,适用于输入和编辑短文本,如用户名、密码、搜索框等。以下是 QLineEdit 的主要特点:

  • 单行文本输入QLineEdit 只允许用户输入单行文本,不能处理多行文本。

  • 文本编辑功能:支持剪切、复制、粘贴、撤销和重做等基本文本编辑操作。

  • 输入限制:支持设置输入掩码(Input Mask)和限制输入字符,确保用户输入符合特定格式。

  • 占位符文本:可以设置占位符文本(Placeholder Text),提示用户输入内容。

1.2 属性

  • text:控件当前的文本内容。

  • placeholderText:占位符文本,用于提示用户输入内容。

  • maxLength:最大输入字符数,限制用户输入的字符数量。

  • echoMode:文本显示模式,如普通文本、密码等。

  • readOnly :是否只读,设置为 true 时用户无法编辑文本。

  • alignment:文本对齐方式,如左对齐、右对齐、居中对齐。

  • clearButtonEnabled:是否启用清除按钮,方便用户快速清空输入内容。

  • frame:是否显示边框,控制控件的外观。

1.3 常用方法

  • text():返回当前文本内容。

    复制代码
    QString currentText = lineEdit->text();
  • setText(const QString &text):设置文本内容。

    复制代码
    lineEdit->setText("Hello, World!");
  • clear():清空文本内容。

    复制代码
    lineEdit->clear();
  • setPlaceholderText(const QString &text):设置占位符文本。

    复制代码
    lineEdit->setPlaceholderText("Enter your name");
  • cursorPosition():返回当前光标位置。

    复制代码
    int position = lineEdit->cursorPosition();
  • setCursorPosition(int position):设置光标位置。

    复制代码
    lineEdit->setCursorPosition(5);
  • setReadOnly(bool readOnly):设置控件是否只读。

    复制代码
    lineEdit->setReadOnly(true);
  • setEchoMode(QLineEdit::EchoMode mode):设置文本显示模式(如密码模式)。

    复制代码
    lineEdit->setEchoMode(QLineEdit::Password);

1.4 拓展应用

  • 输入验证 :通过 QValidator 类,可以为 QLineEdit 设置输入验证器,确保用户输入的内容符合特定格式。例如,限制用户只能输入数字或特定范围内的字符。

  • 自动补全 :结合 QCompleter 类,可以实现输入自动补全功能,提升用户体验。

2. QTextEdit

2.1 特点

QTextEdit 是一个富文本编辑控件,适用于输入和编辑格式化文本,如文档编辑器、邮件编辑器等。以下是 QTextEdit 的主要特点:

  • 多行文本输入:支持多行文本输入,适合处理较长的文本内容。

  • 富文本格式:支持复杂的文本格式,如粗体、斜体、下划线、字体颜色等。

  • 插入富文本元素:支持插入图像、表格和其他富文本元素。

  • HTML 和 RTF 支持:可以通过 HTML 或者富文本格式(Rich Text Format, RTF)来设置和获取内容。

2.2 属性

  • html:HTML 格式的文本内容。

  • readOnly:是否只读。

  • acceptRichText:是否接受富文本。

  • textInteractionFlags:文本交互标志,控制文本的选择、编辑、拖放等行为。

2.3 常用方法

  • toPlainText():返回纯文本内容。

    复制代码
    QString plainText = textEdit->toPlainText();
  • setPlainText(const QString &text):设置纯文本内容。

    复制代码
    textEdit->setPlainText("This is a plain text.");
  • setHtml(const QString &html):设置 HTML 格式的文本内容。

    复制代码
    textEdit->setHtml("<b>Hello</b>, <i>World!</i>");
  • append(const QString &text):在文本末尾追加内容。

    复制代码
    textEdit->append("New line of text.");

2.4 拓展应用

  • 文本格式化 :通过 QTextCursor 类,可以对文本进行更精细的格式化操作,如设置字体、颜色、段落格式等。

  • 文档处理 :结合 QTextDocument 类,可以实现更复杂的文档处理功能,如分页、段落样式、表格处理等。

3. QPlainTextEdit

3.1 特点

QPlainTextEdit 是一个纯文本编辑控件,适用于输入和编辑没有格式的纯文本,如日志查看器、代码编辑器等。以下是 QPlainTextEdit 的主要特点:

  • 多行文本输入:支持多行文本输入,适合处理较长的文本内容。

  • 纯文本格式:不支持富文本格式,仅能处理纯文本。

  • 高效性能:提供了高效的文本操作和显示性能,适合处理大量文本。

  • 行号显示:支持行号显示和行号索引,方便代码编辑和调试。

3.2 属性

  • plainText:纯文本内容。

  • readOnly:是否只读。

  • lineWrapMode:自动换行模式,如不换行、单词换行、字符换行等。

  • textInteractionFlags:文本交互标志,控制文本的选择、编辑、拖放等行为。

3.3 常用方法

  • toPlainText():返回纯文本内容。

    复制代码
    QString plainText = plainTextEdit->toPlainText();
  • setPlainText(const QString &text):设置纯文本内容。

    复制代码
    plainTextEdit->setPlainText("This is a plain text.");
  • appendPlainText(const QString &text):在文本末尾追加内容。

    复制代码
    plainTextEdit->appendPlainText("New line of text.");
  • setLineWrapMode(QPlainTextEdit::LineWrapMode mode):设置自动换行模式。

    复制代码
    plainTextEdit->setLineWrapMode(QPlainTextEdit::WidgetWidth);
相关推荐
赵瑽瑾9 分钟前
Lua语言的嵌入式系统
开发语言·后端·golang
霍璟琅10 分钟前
Delphi语言的数据可视化
开发语言·后端·golang
funsion12 分钟前
Lua中文语言编程源码-第十一节,其它小改动汉化过程
c语言·开发语言·中文分词·lua
NuyoahC36 分钟前
仿 RabbitMQ 实现的简易消息队列
c++·分布式·rabbitmq·项目
Golinie38 分钟前
【C++高并发服务器WebServer】-17:阻塞/非阻塞和同步/异步、五种IO模型、Web服务器
服务器·c++·异步·webserver
kongba0071 小时前
c语言样式主题 清爽风格 代码色彩 keil风格 适合单片机开发GD32 STM32等 cursor或者vscode 的settings.json文件
c语言·vscode·stm32·单片机
NPE~1 小时前
[渗透测试]热门搜索引擎推荐— — fofa篇
开发语言·搜索引擎·渗透测试·php·教程·软件推荐·fofa
霍熠烁1 小时前
Objective-C语言的云计算
开发语言·后端·golang
WANGWUSAN661 小时前
Python教程:使用Matplotlib模块画柱状图、饼形图、直方图
开发语言·经验分享·python·程序人生·matplotlib·数据可视化
卓怡学长1 小时前
w200基于spring boot的个人博客系统的设计与实现
java·数据库·spring boot·后端·spring·intellij-idea