QT--文本框 QLineEdit、qtextedit

在Qt中,文本框(QLineEditQTextEdit)和标签(QLabel)是两种不同的部件(widget),它们的主要区别在于用途和功能:

QLabel(标签)

  1. 用途:用于显示文本或图像,通常作为静态显示组件。
  2. 编辑:不可编辑,除非你在代码中直接改变其内容。
  3. 功能
    • 可以显示纯文本、富文本(HTML格式)和图像。
    • 支持文本对齐方式的设置。
    • 可以设置文本的字体、颜色等样式。
  4. 交互性:不响应用户的输入,仅用于显示信息。

示例代码(标签):

QLabel *label = new QLabel("This is a label");
label->setAlignment(Qt::AlignCenter);
label->setText("<b>Bold Text</b>"); // 使用HTML格式

QLineEdit(单行文本框)

  1. 用途:用于输入和编辑单行文本。
  2. 编辑:用户可以在运行时输入和编辑文本。
  3. 功能
    • 可以设置占位符文本(提示用户输入内容)。
    • 支持输入验证(如仅允许输入数字)。
    • 可以设置文本的对齐方式。
  4. 交互性:用户可以点击并编辑文本。

示例代码(单行文本框):

QLineEdit *lineEdit = new QLineEdit(); 
lineEdit->setPlaceholderText("Enter your text here");

QTextEdit(多行文本框)

  1. 用途:用于输入和编辑多行文本。
  2. 编辑:用户可以在运行时输入和编辑多行文本。
  3. 功能
    • 支持富文本(HTML格式)。
    • 可以设置占位符文本。
    • 支持文本的对齐方式和字体样式等设置。
  4. 交互性:用户可以点击并编辑文本。

示例代码(多行文本框):

QTextEdit *textEdit = new QTextEdit(); 
textEdit->setPlaceholderText("Enter your text here");
textEdit->setHtml("<b>Bold Text</b><br><i>Italic Text</i>");

总结

  • QLabel用于显示静态文本或图像,不可编辑,适用于需要仅显示信息的场合。
  • QLineEdit用于输入和编辑单行文本,适用于需要用户输入单行数据的场合。
  • QTextEdit用于输入和编辑多行文本,适用于需要用户输入长文本或富文本的场合。

这里对QLineEdit进行例子测试

QLineEdit

占位字符串

占位字符,就是当文本框中输入内容为空时,显示的字符,用于提示用户文本框中应该输入什么内容

// 获取和设置占位字符串
QString placeholderText() const
void setPlaceholderText(const QString &)    

如下,是 QQ 登录界面的用户名和密码文本框,在输入内容为空时,提示如下:

对齐方式

用于设置文本框中的内容在水平和垂直两个方向上的对齐方式,比如左对齐、右对齐、上对齐、下对齐、水平居中、垂直居中等。

// 获取和设置文本的对齐方式
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment flag)

其中,Qt::Alignment 是一个宏,常用取值如下:

  • Qt::AlignLeft(0x0001) 水平方向-左对齐
  • Qt::AlignRight(0x0002) 水平方向-右对齐
  • Qt::AlignHCenter(0x0004) 水平方向-居中对齐
  • Qt::AlignTop(0x0020)垂直方向-上对齐
  • Qt::AlignBottom(0x0040)垂直方向-下对齐
  • Qt::AlignVCenter(0x0080)垂直方向-居中对齐
  • Qt::AlignCenter(AlignVCenter | AlignHCenter) 垂直方向和水平方向-居中对齐

上面的每一个宏,都代表 16 进制中的一位,可以进行或(|)操作,来同时设置多个对齐方式。

回显模式

所谓回显模式(EchoMode),就是输入的内容如何显示

该属性既可以在 Qt 设计师右侧的属性窗口中修改,也可以在代码中动态地获取和修改

// 获取和设置回显模式
QLineEdit::EchoMode echoMode() const
void setEchoMode(QLineEdit::EchoMode)

其中,QLineEdit::EchoMode 是一个宏,有如下 4 个取值:

  • QLineEdit::Normal

        正常模式。输入什么就显示什么,默认就是这种方式

  • QLineEdit::Password

        密码模式。不显示实际输入的字符,而是以小圆圈代替,这样别人就无法看到输入的字符。

        Do not display anything. This may be appropriate for passwords where even the length of the password should be kept secret.

  • QLineEdit::NoEcho

        无回显模式。无论输入什么内容,在文本框中都不会显示,这样别人既无法看到输入的内容,也无法知道输入字符的长度

        这对于输入密码非常有用,在linux下输入密码时,就是这种模式

  • QLineEdit::PasswordEchoOnEdit

        正在输入时显示正常模式显示,当失去焦点时以密码模式显示,也就是显示小圆圈

读写控制

用于设置文本框是否可编辑、是否使能

// 获取和设置文本框的只读属性
bool isReadOnly() const
void setReadOnly(bool)// 获取和设置文本框的是否使能
bool isEnabled() const
void setEnabled(bool)

注意:设置为只读和设置为禁能,都无法对文本框进行编辑

区别在于,只读时文本框不会置灰,而禁能时文本框会置灰

格式控制

用于指定文本框输入特定格式的内容。比如输入电话号码格式的文本,或者输入 IP 地址格式的文本等。

// 设置和获取格式控制
QString inputMask() const 
void setInputMask(const QString &inputMask)

接收一个 QString 类型的掩码,常用格式如下:

  • 无格式
// 接受任何字符的输入
setInputMask("");
  • 电话号码
// 9 - 表示要求输入0-9的数字
// ;# - 表示格式字符串结束,并且未输入时显示#
ui->leMask->setInputMask("99999999999;#");
  • 密钥
// 9 - 表示要求输入0-9的数字
// ;# - 表示格式字符串结束,并且未输入时显示*
ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");

其他更多格式使用方法,直接查看 QLineEdit 帮助文档即可,以上列出的两个,仅作为抛砖引玉

信号槽

QLineEdit 有多个信号和槽函数,详情可参考官方帮助文档,这里仅演示两个常用的,作为抛砖引玉

  • textChanged 信号
// 当文本框内容改变时,发射该信号
void textChanged(const QString &text)
  • editingFinished
// 当输入完毕时,发射该信号
void editingFinished()

什么叫输入完毕呢?

答:a、按了 enter 键 b、文本框失去焦点

案例

该案例演示,文本框的回显模式、对齐方式、读写控制、校验、格式控制,如下:

Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 默认正常模式回显on_btnEchoNormal_clicked();// 默认左对齐on_btnAlignLeft_clicked();// 默认可读可写on_btnAccessReadWrite_clicked();// 默认无格式控制on_btnMaskNone_clicked();// 演示-textChanged信号ui->leAdd1->setValidator(new QIntValidator(this)); // 用于设置校验,只允许文本框中输入整数ui->leAdd1->setPlaceholderText("加数");ui->leAdd2->setValidator(new QIntValidator(this));ui->leAdd2->setPlaceholderText("被加数");ui->leSum->setPlaceholderText("和");// 演示-textFinished信号ui->leSub1->setValidator(new QIntValidator(this));ui->leSub1->setPlaceholderText("减数");ui->leSub2->setValidator(new QIntValidator(this));ui->leSub2->setPlaceholderText("被减数");ui->leResult->setPlaceholderText("差");
}Widget::~Widget()
{delete ui;
}// 1、回显模式
// 1.1 正常
void Widget::on_btnEchoNormal_clicked()
{ui->leEcho->clear();ui->leEcho->setEchoMode(QLineEdit::Normal);ui->leEcho->setPlaceholderText("Normal");
}// 1.2 密码模式
void Widget::on_btnEchoPassword_clicked()
{ui->leEcho->clear();ui->leEcho->setEchoMode(QLineEdit::Password);ui->leEcho->setPlaceholderText("Password");
}// 1.3 不回显
void Widget::on_btnEchoNoEcho_clicked()
{ui->leEcho->clear();ui->leEcho->setEchoMode(QLineEdit::NoEcho);ui->leEcho->setPlaceholderText("NoEcho");
}// 1.4 失去焦点时为密码模式
void Widget::on_btnEchoPasswordEchoOnEdit_clicked()
{ui->leEcho->clear();ui->leEcho->setEchoMode(QLineEdit::PasswordEchoOnEdit);ui->leEcho->setPlaceholderText("PasswordEchoOnEdit");
}// 打印输处
void Widget::on_btnEchoPrint_clicked()
{QMessageBox::information(this, "回显模式", ui->leEcho->text());
}// 2、对齐方式
// 2.1 左对齐
void Widget::on_btnAlignLeft_clicked()
{ui->leAlignment->setAlignment(Qt::AlignLeft);ui->leAlignment->setPlaceholderText("Left");
}// 2.2 居中对齐
void Widget::on_btnAlignCenter_clicked()
{ui->leAlignment->setAlignment(Qt::AlignCenter);ui->leAlignment->setPlaceholderText("Center");
}// 2.3 右对齐
void Widget::on_btnAlignRight_clicked()
{ui->leAlignment->setAlignment(Qt::AlignRight);ui->leAlignment->setPlaceholderText("Right");
}// 3、读写控制
// 3.1 可读可写
void Widget::on_btnAccessReadWrite_clicked()
{ui->leAccess->setReadOnly(false);ui->leAccess->setPlaceholderText("ReadWrite");
}// 3.2 只读
void Widget::on_btnAccessReadOnly_clicked()
{ui->leAccess->setReadOnly(true);ui->leAccess->setPlaceholderText("ReadOnly");
}// 3.3 禁能
void Widget::on_btnAccessDisabled_clicked()
{ui->leAccess->setEnabled(false);ui->leAccess->setPlaceholderText("Disabled");
}// 3.4 使能
void Widget::on_btnAccessEnabled_clicked()
{ui->leAccess->setEnabled(true);ui->leAccess->setPlaceholderText("Enabled");
}void Widget::on_btnAccessPrint_clicked()
{QMessageBox::information(this, "文本框演示", ui->leAccess->text());
}// 4、格式控制
// 4.1 无格式
void Widget::on_btnMaskNone_clicked()
{ui->leMask->setInputMask("");
}// 4.2 电话号码格式
void Widget::on_btnMaskPhone_clicked()
{// 9 - 表示要求输入0-9的数字// ;# - 表示格式字符串结束,并且未输入时显示#ui->leMask->setInputMask("99999999999;#");
}// 4.3 密钥格式
void Widget::on_btnMaskLicense_clicked()
{// 9 - 表示要求输入0-9的数字// ;# - 表示格式字符串结束,并且未输入时显示*ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");
}// 5、信号槽演示
// 5.1 textChanged信号 - 实现自动计算加法结果
void Widget::on_leAdd1_textChanged(const QString &arg1)
{int sum = arg1.toInt() + ui->leAdd2->text().toInt();ui->leSum->setText(QString::number(sum));
}void Widget::on_leAdd2_textChanged(const QString &arg1)
{int sum = arg1.toInt() + ui->leAdd1->text().toInt();ui->leSum->setText(QString::number(sum));
}// 5.2 editingFinished信号 - 实现自动计算减法结果
void Widget::on_leSub1_editingFinished()
{int result = ui->leSub1->text().toInt() - ui->leSub2->text().toInt();ui->leResult->setText(QString::number(result));
}void Widget::on_leSub2_editingFinished()
{int result = ui->leSub1->text().toInt() - ui->leSub2->text().toInt();ui->leResult->setText(QString::number(result));
}

 

因为明王写的很简明易懂,我直接搬过来了,具体参考这篇文章,同时因为前面几个的操作发现并不难,所以自己就不敲代码了,只进行总结和思考,先知道这个东西,后面用到在深入学习即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/454560.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业数字化转型的理论指南:构建未来企业的关键策略与实践路径

数字化转型已经成为当今企业发展和市场竞争的核心驱动力&#xff0c;而在这一过程中&#xff0c;企业架构&#xff08;EA&#xff09;发挥着至关重要的作用。这本白皮书《世界级企业架构&#xff1a;建立和发展EA能力的领导者方法》提供了深入的理论指导&#xff0c;为企业如何…

专线物流公告服务平台痛点分析:重塑信任、效率与透明度的新篇章

专线物流公告服务平台痛点分析&#xff1a;重塑信任、效率与透明度的新篇章 在当今全球化的商业环境中&#xff0c;专线物流服务作为连接生产与消费的关键纽带&#xff0c;其重要性不言而喻。然而&#xff0c;随着市场竞争的加剧和消费者需求的日益多样化&#xff0c;专线物流…

禁止VMware Service进程开机自动启动

方法一&#xff1a;使用服务管理器 (Services.msc) 打开服务管理器&#xff1a; 按 Win R 打开运行对话框&#xff0c;输入 services.msc&#xff0c;然后按 Enter。 找到 VMware Authorization Service&#xff1a; 在服务列表中找到 VMware Authorization Service。 更改启动…

由云智慧发起的《数字政府统一运维 第1部分:运维平台建设指南》团标正式发布

2024年9月&#xff0c;由云智慧和中国信通院联合主导的《数字政府统一运维 第1部分&#xff1a;运维平台建设指南》团体标准完成编写&#xff0c;经中国互联网协会相关专家审查通过并准予发布&#xff0c;标准编号&#xff1a;T/ISC 0062-2024。 中国数字政府建设已经进入了高…

java高频面试题汇总

Java 基础 Java 中的序列化和反序列化是什么&#xff1f; 序列化是将 Java 对象转换为字节流的过程&#xff0c;以便可以将其存储在文件中或通过网络进行传输。反序列化则是将字节流恢复为 Java 对象的过程。通过实现 Serializable 接口&#xff0c;Java 对象可以支持序列化。…

基于Arduino的LED亮灭按键控制

一、项目简介 通过一个按键控制LED的亮灭&#xff0c;实现按键按一下LED点亮&#xff0c;再按一下LED熄灭&#xff0c;交替循环。 二、控制原理 1. 按键检测原理&#xff1a; 将Arduino的监测端口设置为输入上拉模式&#xff08;INPUT_PULLUP&#xff09;&#xff0c;用于连…

Python实现文本数据可视化:构建动态词云

引言 在信息爆炸的时代&#xff0c;如何有效地从海量的文本数据中提取关键信息并直观展示&#xff0c;成为数据分析师和研究人员面临的重要挑战。词云作为一种流行的文本可视化工具&#xff0c;通过不同大小、颜色和字体的文字展示文本中关键词的出现频率或重要性&#xff0c;…

某ai gpt的bug

某ai gpt的bug 背景 遇到了一个奇怪的现象&#xff1a; 输入内容 2024-10-21 10:09:31,052 ERROR o.a.j.t.JMeterThread: Test failed! java.lang.IllegalArgumentException:输出结果

Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent

说在前面的话 要想获得测试覆盖率报告&#xff0c;第一步要做的是&#xff0c;采集覆盖率数据&#xff0c;并输入到tcp。 而本文便是介绍一种java应用程序部署下的推荐方式。 作为一种通用方案&#xff0c;首先不想对应用程序有所侵入&#xff0c;其次运维和管理方便。 正好…

动态路由:RIP实验

1.划分IP 2.配置环回 3.接口配置IP地址 4.进入RIP中&#xff0c;关闭手工汇总&#xff0c;选择版本号&#xff0c;宣告 5.ping命令查看是否全网通 6.在R3上配置缺省路由 [R3-rip-1]default-route originate 在边界路由器上下发缺省 7.为了安全配置手工认证 [R1-Gigab…

WordPress+Nginx 安装教程

WordPress 是一个开源的网站建设工具&#xff0c;可以用它来“快速”搭建个人博客&#xff0c;官网等等。它本身是用 php 开发的&#xff0c;本身部署不复杂&#xff0c;主要是需要一些配套的东西才能跑起来&#xff0c;网上的一些教程也是写的不清不楚&#xff0c;本文针对非 …

【宠物空气净化器选购指南】希喂、米家、IAM、352 、霍尼韦尔测评

前段时间一个朋友给我吐槽说&#xff0c;入了个宠物空气净化器&#xff0c;根本就是智商税。毛吸不进去堵在进风口不说&#xff0c;运行声音跟隔壁在装修似的&#xff0c;一开机猫就躲床底下不出来。总之&#xff0c;已经闲置很长一段时间了。更离谱的是&#xff0c;最近家里隐…

qt QGraphicsGridLayout详解

一、概述 QGraphicsGridLayout是Qt框架中用于在QGraphicsScene中布置图形项的一个布局管理器。它类似于QWidget中的QGridLayout&#xff0c;但主要处理的是QGraphicsItem和QGraphicsWidget等图形项。通过合理设置网格位置、伸缩因子和尺寸&#xff0c;可以实现复杂而灵活的布局…

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布

我国首个自主可控的操作系统——华为原生鸿蒙操作系统正式发布 在科技日新月异的今天&#xff0c;操作系统作为数字世界的基石&#xff0c;其重要性不言而喻。近日&#xff0c;华为公司在深圳隆重举行了原生鸿蒙操作系统发布会&#xff0c;向全球宣告了我国首个自主可控的移动…

追寻数组的轨迹,解开算法的情愫

公主请阅 1. 移除元素1.1 题目说明示例 1示例 2 1.2 题目分析1.3 代码部分1.4 代码分析 2. 删除有序数组中的重复项2.1 题目说明示例 1示例 3 2.2 题目分析2.3 代码部分2.4 代码分析 1. 移除元素 题目传送门 1.1 题目说明 题目描述&#xff1a; 给你一个数组 nums 和一个值 v…

element-时间选择器单独写两个时间选择器并按照规则进行置灰选择,精确到时分秒

项目场景&#xff1a; 要求&#xff1a; 开始时间和结束时间可以分开搜索&#xff0c;所以组件自带的时间范围选择器不适用开始时间和结束时间超过当前时间置灰不可选择开始时间不可选择结束时间之后的时间结束时间不可选择开始时间之前的时间 代码实例 <el-form-item>&…

软件质量管理体系,软件评审资料,资质认证资料,安全建设,数据安全及项目管理全套资料(原件参考)

软件项目质量管理体系是指一套系统化的管理方法、流程、工具和文档&#xff0c;旨在确保软件项目从需求分析、设计、开发、测试到部署和维护的整个生命周期中&#xff0c;都能达到预定的质量标准和客户期望。该体系通过明确的角色和责任、标准化的工作流程、有效的质量控制和持…

搭建微信AI机器人

AI WeWork Robot是一个基于Python的企业微信机器人&#xff0c;能够接入等大型语言模型。 默认配置为Gemini-Pro&#xff0c;它可以帮助企业自动化处理信息&#xff0c;提供智能回复等功能&#xff0c;经过本人一年测试&#xff0c;稳如老狗 特性 ● 自动回复消息 ● 接入多种…

若依框架定制

1. 若依框架修改器 若依框架修改器是一个可以一键修改RuoYi框架包名、项目名等的工具。 1.1 下载地址 https://gitee.com/lpf_project/RuoYi-MT/releases 1.2 项目修改 选择文件&#xff0c;修改后项目目录如右图所示。 2. 新建业务模块 2.1 新建子业务模块 &#xff08…