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);
相关推荐
LinHenrY12275 分钟前
初识C语言(文件操作)
c语言·windows·microsoft
梅孔立6 分钟前
【实用教程】python 批量解析 EML 邮件文件 存成txt ,可以利用 AI 辅助快速生成年终总结
开发语言·python
rannn_1119 分钟前
【Git教程】概述、常用命令、Git-IDEA集成
java·git·后端·intellij-idea
我家领养了个白胖胖9 分钟前
向量化和向量数据库redisstack使用
java·后端·ai编程
c#上位机18 分钟前
C#异步编程之async、await
开发语言·c#
苹果醋320 分钟前
Java设计模式实战:从面向对象原则到架构设计的最佳实践
java·运维·spring boot·mysql·nginx
智者知已应修善业28 分钟前
【删除有序数组中的重复项 II之O(N)算法】2024-1-31
c语言·c++·经验分享·笔记·算法
郑州光合科技余经理30 分钟前
实战分享:如何构建东南亚高并发跑腿配送系统
java·开发语言·javascript·spring cloud·uni-app·c#·php
爱装代码的小瓶子31 分钟前
【c++进阶】C++11新特性:一切皆可{}初始化
开发语言·c++·visual studio
yaoxin52112334 分钟前
273. Java Stream API - Stream 中的中间操作:Mapping 操作详解
java·开发语言·python