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);
相关推荐
ThisIsClark35 分钟前
【玩转正则表达式】Python、Go、Java正则表达式解释器的差异解析(附示例)
java·python·golang·正则表达式
Java版蜡笔小新37 分钟前
外星人入侵-Python-三
开发语言·python·pygame
此刻我在家里喂猪呢41 分钟前
qt介绍自定义插件 三
开发语言·qt
CHPCWWHSU44 分钟前
vulkanscenegraph显示倾斜模型(5.3)-相机
c++·osg·vulkan·vsg
blammmp2 小时前
Java EE 进阶:Spring Boot 日志
java·spring boot·java-ee
JafarOne2 小时前
手机端Flutter、React Native与原生安卓、iOS交互的方案及设计原理
android·java·flutter·react native·ios·智能手机
百锦再2 小时前
《C#上位机开发从门外到门内》3-3:基于USB的设备管理系统
开发语言·单片机·数码相机·c#·上位机·下位机
Channing Lewis2 小时前
Python print() 打印多个变量时,可变对象和不可变对象的区别
开发语言·python
小辉同志3 小时前
C语言之链表
c语言·开发语言·链表
小牛蛋4 小时前
visual studio code C++开发基础配置
c++·ide·vscode