Qt QLineEdit文本框控件

news2024/9/20 22:41:55

文章目录

  • 1 属性和方法
    • 1.1 占位字符串
    • 1.2 对齐方式
    • 1.3 回显模式
    • 1.4 读写控制
    • 1.5 格式控制
    • 1.6 信号和槽
  • 2 实例
    • 2. 布局
    • 2.2 代码实现

QLineEdit 是Qt 中的文本框,准确地说是单行文本框,通常用于接受用户的输入。

比如用户输入用户名、密码等,都可以使用该控件。

1 属性和方法

QLineEdit有很多属性,完整的可查看帮助文档。这里列出常用的属性和方法:

1.1 占位字符串

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

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

1.2 对齐方式

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

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

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

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

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

1.3 回显模式

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

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

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

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

  • LineEdit:Normal

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

  • QLineEdit:Password

    密码模式。不显示实际输入的字符,而是以小圆圈代替,这样别人就无法看到输入的字符。Do not display anything.Thismay be appropriateforpasswords where even thelength of the password should be keptsecret.

  • QLineEdit:NoEcho

    无回显模式。无论输入什么内容,在文本框中都不会显示,这样别人既无法看到输入的内容,也无法知道输入字符的长度这对于输入密码非常有用,在linux下输入密码时,就是这种模式

  • QLineEdit:PasswordEchoOnEdit

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

1.4 读写控制

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

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

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

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

1.5 格式控制

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

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

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

  • 无格式

    // 接受任何字符的输入
    setInputMask("");
    
  • 电话号码

    // 9 - 表示要求输入0 - 9的数字
    // ;# - 表示格式字符串结束,并且未输入是显示#
    ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");
    

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

1.6 信号和槽

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

  • textChanged信号

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

    // 当输入完毕时 发射该信号
    void editingFinished()
    

    什么叫输入完毕呢?

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

2 实例

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

2. 布局

在UI设计师界面,拖拽对应的控件,修改显示的文字、控件的name,然后完成布局

在这里插入图片描述

在这里插入图片描述

2.2 代码实现

// 在Widget.cpp文件中
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) {
    ui->setupUi(this);

    // 不让输入字符串
    // 只允许输入整数
    ui->leAdd1->setValidator(new QIntValidator(this));
    ui->leAdd2->setValidator(new QIntValidator(this));
    ui->leAdd1->setPlaceholderText("加数");
    ui->leAdd2->setPlaceholderText("被加数");
    ui->leSub1->setPlaceholderText("减数");
    ui->leSub2->setPlaceholderText("被减数");
    ui->leSub1->setValidator(new QIntValidator(this));
    ui->leSub2->setValidator(new QIntValidator(this));
}

Widget::~Widget() {
    delete ui;
}

void Widget::on_btnEchoNormal_clicked() {
    // 清空一下
    ui->leEcho->clear();
    // 回显模式
    // 设置正常
    ui->leEcho->setEchoMode(QLineEdit::Normal);
    // 占位字符串
    ui->leEcho->setPlaceholderText("Normal");
}

void Widget::on_btnEchoPassword_clicked() {
    // 清空一下
    ui->leEcho->clear();
    // 回显模式
    // 设置正常
    ui->leEcho->setEchoMode(QLineEdit::Password);
    // 占位字符串
    ui->leEcho->setPlaceholderText("Password");
}

void Widget::on_btnEchoNoEcho_clicked() {
    // 清空一下
    ui->leEcho->clear();
    // 回显模式
    // 设置正常
    ui->leEcho->setEchoMode(QLineEdit::NoEcho);
    // 占位字符串
    ui->leEcho->setPlaceholderText("NoEcho");
}

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

void Widget::on_btnAlignLeft_clicked() {
    ui->leAlignment->setAlignment(Qt::AlignLeft);
    // 占位字符串
    ui->leAlignment->setPlaceholderText("Left");
}

void Widget::on_btnAlignCenter_clicked() {
    ui->leAlignment->setAlignment(Qt::AlignCenter);
    // 占位字符串
    ui->leAlignment->setPlaceholderText("Center");
}

void Widget::on_btnAlignRight_clicked() {
    ui->leAlignment->setAlignment(Qt::AlignRight);
    // 占位字符串
    ui->leAlignment->setPlaceholderText("Right");
}

// 读写控制
void Widget::on_btnAccessReadWrite_clicked() {
    ui->leAccess->setReadOnly(false);
    ui->leAccess->setPlaceholderText("ReadWrite");
}

void Widget::on_btnAccessReadOnly_clicked() {
    ui->leAccess->setReadOnly(true);
    ui->leAccess->setPlaceholderText("ReadOnly");
}

void Widget::on_btnAccessDisabled_clicked() {
    ui->leAccess->setEnabled(false);
    ui->leAccess->setPlaceholderText("Disabled");
}

void Widget::on_btnAccessEnabled_clicked() {
    ui->leAccess->setEnabled(true);
    ui->leAccess->setPlaceholderText("Enabled");
}

// 格式控制
void Widget::on_btnMaskNone_clicked() {
    ui->leMask->setInputMask("");
}

void Widget::on_btnMaskPhone_clicked() {
    // 9 - 表示要求输入0-9的数字
    // ; - 表示格式字符串结束
    // # - 表示无输入时,显示的字符 -占位字符
    ui->leMask->setInputMask("9999999999;#");
}

void Widget::on_btnMaskLicense_clicked() {
    // > 转换为大写
    // A - 代表要求输入英文字母
    // ; - 表示格式字符串结束
    // # - 表示无输入时,显示的字符 -占位字符
    ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#");
}

void Widget::on_leAdd1_textChanged(const QString &arg1) {
    // 字符转int
    int sum = arg1.toInt() + ui->leAdd2->text().toInt();
    // 数字转字符串
    ui->leSum->setText(QString::number(sum));
}

void Widget::on_leAdd2_textChanged(const QString &arg1) {
    // 字符转int
    int sum = arg1.toInt() + ui->leAdd1->text().toInt();
    // 数字转字符串
    ui->leSum->setText(QString::number(sum));
}

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.coloradmin.cn/o/1367504.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows安装Docker运行中间件(详细)

1、Docker Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接…

人类的失误、错误与机器的失误、错误

人类的失误和错误是指人类在认知、判断、决策和行动过程中出现的错误或差错。这些错误可能是由于认知偏差、信息不完全、判断错误、行为失控等原因造成的。人类的失误和错误是不可避免的,而且在很多领域都有广泛的存在,包括工作、学习、社交、交通等方面…

深入理解Java源码:提升技术功底,深度掌握技术框架,快速定位线上问题

为什么要看源码: 1、提升技术功底: 学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底 2、深度掌握技术框架: 源码看多了,对于一个新技术…

线性代数 --- 为什么LU分解中的下三角矩阵L的主对角线上都是1?

为什么LU分解中的下三角矩阵L的主对角线上都是1? 笔者的一些话: 为什么LU分解中L矩阵的主对角线上都是1?因为最近一段时间在研究LU分解的编程实现,这个问题也就时不时的从我脑子里面冒出来。但大多时候都是一闪而过,没有太在意。…

IIC Master 设计实现

写个IIC的主机来玩一玩。 仅100M时钟输入SCL波形工整,任意两个上升沿之间均为整数倍周期,占空比50%发送数据时SDA严格对其到SCL低电平正中间尽可能少的状态机不浪费资源数据逻辑和时序逻辑分离 接口设计中,我的思路是将数据与时序分离开&am…

数据结构-测试5

一、判断题 1.二叉树只能用二叉链表表示(F) 二叉树的存储结构有两种,顺序存储结构和链式存储结构 2. 装填因子是散列表的一个重要参数,它反映散列表的装满程度。(T) 装填因子越小,发生冲突的可能性越小 3. 在任何情况…

损失函数 - Focal Loss

b站账号 : Enzo_Mi 知识星球 : Enzo AI学习小组 | 小白分会 欢迎加入我的知识星球,一起来学习吧 ~ Focal Loss 1、Focal Loss 提出的背景2、正负样本数量不均衡问题 的解决 : baseline3、难分类样本/易分类样本 数量不均衡问题 的解决 : Focal Loss3、类别加权 Focal L…

1.7数算PPT选择汇总,PTA选择汇总,计算后缀表达式,中缀转后缀、前缀、快速排序

PTA选择汇总 在第一个位置后插入,注意是在后面插入,而不是前面;要移动49,为50-I,第25个的话,移25个 如果是插在前面,就移动50,N-I1,注意是插在前面还是后面 删第一个&a…

今日实践 — 附加数据库/重定向失败如何解决?

WMS数据库与重定向 前言正文如何建立数据库连接?第一步:打开SSMS,右击数据库,点击附加第二步:点击添加第三步:找到自己的数据库文件,点击确定按钮第四步:若有多个数据库,…

Hyperledger Fabric 管理链码 peer lifecycle chaincode 指令使用

链上代码(Chaincode)简称链码,包括系统链码和用户链码。系统链码(System Chaincode)指的是 Fabric Peer 中负责系统配置、查询、背书、验证等平台功能的代码逻辑,运行在 Peer 进程内,将在第 14 …

如何查找native服务的接口实现

以Netd为例: 首先adb看一下服务的接口: 接口文件是INetd,去源码找一下INetd.aidl 已经确定了接口API,对于native服务端的实现,一般的继承顺序为: 根据继承关系,对于BnXxx/XxxService 对象&…

IO类day02

JAVA IO java io可以让我们用标准的读写操作来完成对不同设备的读写数据工作. java将IO按照方向划分为输入与输出,参照点是我们写的程序. 输入:用来读取数据的,是从外界到程序的方向,用于获取数据. 输出:用来写出数据的,是从程序到外界的方向,用于发送数据. java将IO比喻为…

15个等轴视图设计的电动车汽车无人机等PR剪辑素材视频制作元素

包含15个等轴视图、等距视角电动车、汽车、无人机、沙漏、飞机等PR剪辑素材视频制作元素mogrt动画模板。 特征: 等距设计; 可以更改颜色; 分辨率:全高清(19201080); 持续时间:15秒&a…

第四站:C/C++基础-指针

目录 为什么使用指针 函数的值传递,无法通过调用函数,来修改函数的实参 被调用函数需要提供更多的“返回值”给调用函数 减少值传递时带来的额外开销,提高代码执行效率 使用指针前: 使用指针后: 指针的定义: 指针的含义(进阶): 空指针…

【C++进阶04】STL中map、set、multimap、multiset的介绍及使用

一、关联式容器 vector/list/deque… 这些容器统称为序列式容器 因为其底层为线性序列的数据结构 里面存储的是元素本身 map/set… 这些容器统称为关联式容器 关联式容器也是用来存储数据的 与序列式容器不同的是 其里面存储的是<key, value>结构的键值对 在数据检索时…

ARCGIS PRO SDK 设置UI控件状态:启用/禁用

举例&#xff1a; 第一步&#xff1a;添加两个 Button 分别命名为Connect、Disconnect 第二步&#xff1a;nfig.daml添加状态和条件&#xff1a;在 DAML 中定义条件。请记住&#xff0c;条件存在于模块标记<modules>之外&#xff0c;下代码定义&#xff1a;Disconnected_…

【K8S 云原生】Kurbernets集群的调度策略

目录 一、Kubernetes的list-watch机制 1、List-watch 2、创建pod的过程&#xff1a; 二、scheduler调度的过程和策略&#xff1a; 1、简介 2、预算策略&#xff1a;predicate 3、优先策略&#xff1a; 3.1、leastrequestedpriority&#xff1a; 3.2、balanceresourceal…

计操进程同步(信号量pv灵魂三问法狂练版)

文章目录 解题秘诀-灵魂三问法一 同步问题1.1 围棋问题1.2 数据采集问题1.3 三进程文件打印问题1.4 司机售票员问题 二 同步互斥问题2.1 果盘问题 三 同步资源管控问题3.1 兔子问题3.2 数据写入和读取问题3.3 图书馆问题3.4 超市问题3.4.1 解法一3.4.2 解法二 解题秘诀-灵魂三问…

基于ODBC的数据库应用(MFC)

文章目录 1.预备知识1.数据库概述1.数据库和DBMS2.结构化查询语言SQL(Structured Query Language)3.数据库方式种类1.ODBC(Open DataBase Connectivity)开放数据库连接2.DAO(Data Access Objects)数据访问对象3.OLE DB(OLE数据库) 2.MFC ODBC1.CRecordset类构造记录集属性记录集…

c++学习:容器stack栈+queue+map(简易输入法)+deque

目录 stack 模板原型 头文件 模板的成员类型和成员对象和成员函数 栈类模板的容器对象 实例 queue 模板原型 头文件 模板的成员类型和成员对象和成员函数 队列类模板的容器对象 实例 map 模板原型 头文件 模板的成员类型和成员对象和成员函数 关联类模板的容器…