当前位置: 首页 > news >正文

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));
}

 

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

相关文章:

QT--文本框 QLineEdit、qtextedit

在Qt中&#xff0c;文本框&#xff08;QLineEdit 或 QTextEdit&#xff09;和标签&#xff08;QLabel&#xff09;是两种不同的部件&#xff08;widget&#xff09;&#xff0c;它们的主要区别在于用途和功能&#xff1a; QLabel&#xff08;标签&#xff09; 用途&#xff1…...

Qt编写的modbus模拟器/支持网络和串口以及websocket/支持网络rtu

一、使用说明 1.1 设备模拟-Com 第一步&#xff0c;填写要模拟的设备地址&#xff0c;0表示自动处理&#xff0c;也就是收到什么地址就应答什么地址。第二步&#xff0c;填写对应的串口号和波特率。第三步&#xff0c;单击打开串口&#xff0c;成功后会变成关闭串口字样。单击…...

Standard_Matrix

文章目录 假设我们有一个样本矩阵X&#xff0c;每一列表示一个样本&#xff0c;现在我们要把样本转换成均值为0&#xff0c;方差为1的样本矩阵 X s t a n d a r d X − μ s \begin{equation} X_{standard}\frac{X-\mu}{s} \end{equation} Xstandard​sX−μ​​​python 测试…...

js 通过input,怎么把选择的txt文件转为base64格式

文章目录 基本概念与作用说明Base64编码File对象相互转换的意义 从File对象到Base64编码从Base64编码到File对象批量转换File对象为Base64编码批量转换Base64编码为File对象功能使用思路思路一&#xff1a;动态生成预览思路二&#xff1a;异步处理与用户反馈思路三&#xff1a;…...

华为HCIP-openEuler认证详解

华为HCIP认证&#xff08;Huawei Certified ICT Professional&#xff09;是华为提供的专业级ICT技术认证&#xff0c;它旨在验证技术人员在特定技术领域的专业知识和实践能力。对于华为欧拉&#xff08;openEuler&#xff09;方向的HCIP认证&#xff0c;即HCIP-openEuler&…...

YOLO11改进 | 注意力机制 | 添加双重注意力机制 DoubleAttention【附代码+小白必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 在本文中&#xff0c;给大家带来的教程是…...

sentinel原理源码分析系列(四)-ContextEntry

启动和初始化完成后&#xff0c;调用者调用受保护资源&#xff0c;触发sentinel的机制&#xff0c;首先构建或获取Context和获取Entry&#xff0c;然后进入插槽链&#xff0c;决定调用是否通过&#xff0c;怎样通过 上图展示构建Context和获取Entry的类互动图 获取或构建Conte…...

Tcp协议讲解与守护进程

TCP协议&#xff1a;面向链接&#xff0c;面向字节流&#xff0c;可靠通信 创建tcp_server 1.创建套接字 域&#xff1a;依旧选择AF_INET 连接方式&#xff1a; 选择SOCK_STREAM 可靠的 2.bind 3.监听装置 client要通信&#xff0c;要先建立连接&#xff0…...

学习threejs,THREE.LineDashedMaterial 虚线材质,基于gosper高斯帕曲线生成雪花动画

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.LineDashedMaterial虚…...

LeetCode 热题100之哈希

1.两数之和 思路分析1&#xff08;暴力法&#xff09; 双重循环枚举满足num[i] nums[j] target的索引&#xff0c;刚开始不知道如何返回一对索引。后来知道可以直接通过return {i,j}返回索引&#xff1b;注意&#xff1a;j应该从i1处开始&#xff0c;避免使用两次相同的元素…...

软工——模块设计(爱啦爱啦)

过程设计的工具 一、程序流程图 程序流程图又称为程序框图&#xff0c;它是历史最悠久、使用最广泛的描述过程设计的方法。 它的主要优点是对控制流程的描绘很直观&#xff0c;便于初学者掌握。 程序流程图历史悠久&#xff0c;至今仍在广泛使用着。 程序流程图的主要缺点&a…...

Xmind一款极简思维导图和头脑风暴软件,支持PC和移动端,Xmind 2024.10.01101版本如何升级到Pro版?简单操作,最新可用!

文章目录 Xmind下载安装Xmind免费升级到Pro Xmind 是一款全功能的思维导图和头脑风暴软件&#xff0c;不限制节点和文件数&#xff0c;创新无限&#xff0c;界面纯净简洁无广告&#xff0c;支持PC和移动端&#xff0c;思维导图和大纲视图自由切换&#xff0c;可本地化文档存储&…...

自动化工具:Ansible

目录 一、运维自动化工具有哪些 二、Ansible 概述 1、Ansible 概念 2、Ansible 特点 3、Ansible 工作流程 三、安装部署Ansible 1、环境部署 2、管理节点安装 Ansible 3、查看Ansible相关文件 4、配置主机清单 5、免密管理 ssh-keygen 5.1、测试连通性 5.2、简洁输…...

我是类(最终版)

文章目录 再看构造函数类型转换static静态成员友元内部类匿名对象对象拷贝时的编译器优化 再看构造函数 本标题的目的是解决如下问题&#xff1a;当实现MyQueue时&#xff0c;我们不需要写默认构造函数&#xff0c;因为编译器会调用Stack的默认构造&#xff0c;但是&#xff0…...

详解ip route

ip route命令用于查看 Linux 系统中的路由表信息。 路由表包含的主要信息 目标网络地址&#xff08;Destination&#xff09; 显示网络的目标地址&#xff0c;可以是一个具体的网络地址&#xff08;如192.168.1.0/24&#xff09;&#xff0c;也可以是一个默认网络&#xff08;…...

OpenGL进阶系列04 - OpenGL 点精灵

一:概述 OpenGL 点精灵是一种渲染技术,用于在3D场景中渲染小的、可缩放的点。它们通常用于表示粒子效果、光源或其他小物体。点精灵会根据视图和投影矩阵自动调整大小,使其始终在屏幕上保持一致的视觉效果。实现时,点精灵通常通过使用纹理和适当的着色器来增加视觉效果。 …...

VSCode按ctrl与鼠标左键无法实现跳转的解决办法

vscode编译环境老是出问题&#xff0c;下面介绍两种解决方法 需要提前配置好代码编译需要的库以及编译器位置等等。 ctrlshiftp,输入 >C/C配置&#xff08;JSON&#xff09; 打开生成的c_cpp_properties.json {"configurations": [{"name": "Li…...

U盘数据丢失不用慌,这4个工具可以帮你恢复。

因为将大量的数据存到U盘里面很方便&#xff0c;所以U盘使用也很广泛。但是里面的数据丢失想必很多朋友都碰到过&#xff0c;不过现在有很多方法都可以帮助大家将数据回顾回来。这里我便筛选了几款比较好的数据恢复工具&#xff0c;在这里跟大家分享。 1、福昕U盘恢复软件 直通…...

如何在Ubuntu上挂载一块硬盘:详解方案与实操步骤【小白无坑版】

如何在Ubuntu上挂载一块硬盘&#xff1a;详解方案与实操步骤 一、引言 在日常的开发或使用中&#xff0c;我们经常会遇到这样的场景&#xff1a;系统硬盘空间不足&#xff0c;需要额外挂载一块硬盘以扩展存储&#xff1b;或者我们需要将一块新硬盘用于专门存储数据或备份项目…...

【JAVA】第三张_Eclipse下载、安装、汉化

简介 Eclipse是一种流行的集成开发环境&#xff08;IDE&#xff09;&#xff0c;可用于开发各种编程语言&#xff0c;包括Java、C、Python等。它最初由IBM公司开发&#xff0c;后来被Eclipse Foundation接手并成为一个开源项目。 Eclipse提供了一个功能强大的开发平台&#x…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Linux-07 ubuntu 的 chrome 启动不了

文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了&#xff0c;报错如下四、启动不了&#xff0c;解决如下 总结 问题原因 在应用中可以看到chrome&#xff0c;但是打不开(说明&#xff1a;原来的ubuntu系统出问题了&#xff0c;这个是备用的硬盘&a…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...