Qt QLineEdit文本框控件

文章目录

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国京津冀国际光伏展

中国京津冀国际光伏展是一个专门展示光伏技术和产品的展览会。该展览会旨在促进光伏产业的发展和推广,推动太阳能光伏的应用和利用。 这个展览会通常会邀请国内外的光伏企业和专家参加,展示最新的光伏技术和产品,包括太阳能电池板、光伏组件、…

Spring MVC MVC介绍和入门案例

1.SpringMVC概述 1.1.MVC介绍 MVC是一种设计模式,将软件按照模型、视图、控制器来划分: M:Model,模型层,指工程中的JavaBean,作用是处理数据 JavaBean分为两类: 一类称为数据承载Bean&#xf…

解读 Sobit v2:铭文资产跨链更注重安全、易用性

铭文市场的发展正在从早期的“无序”进入到“有序”阶段,我们看到从 12 月份以来,比特币生态内的多个应用纷纷宣布获得融资。这表明,目前仍旧有大量的资金有意向铭文领域,同样铭文赛道新一轮浪潮或许正在酝酿。 另一方面&#xff…

Linux ps命令

一. 说明 用于显示系统中当前运行的进程信息。 提供了查看进程的不同视图和选项,允许用户了解系统上正在运行的进程的状态、资源使用情况等。 -e:显示所有进程,而不仅仅是与当前终端关联的进程。-f:以完整的格式显示进程信息&am…

混淆技术概论

混淆技术概论 引言 在逆向工程领域,混淆技术是一种非常重要的技术手段,通过打破人们的思维惯性,使得逆向分析变得更加困难。本文将会介绍混淆技术的概念、分类及其应用,以及如何使用IPA Guard进行iOS IPA重签名。 混淆技术概述…

python(17)--文件的输入/输出

前言 在Python中,文件文本操作是非常重要的,主要有以下几个原因: 数据持久性:当你需要长期存储数据,如用户的个人信息、交易记录或数据库元数据等,将数据保存在文件中是一种常见的方法。文件系统提供了持…

C# Onnx yolov8 竹签计数、一次性筷子计数

目录 效果 模型信息 项目 代码 数据集 下载 C# Onnx yolov8 竹签计数、一次性筷子计数 效果 模型信息 Model Properties ------------------------- date:2024-01-03T08:55:22.768617 author:Ultralytics task:detect license&#x…

一起来了解综合能源服务认证

首先,综合能源服务认证是有国家政策支持的, 《能源生产和消费革命战略(2016-2030)》中指出:1、能源生产端要以绿色低碳为方向,推动能源集中式和分布式开发并举,大幅提高新能源和可再生能源比重&#xff1b…

ELK生命周期

ELKkafka <es生命周期可视化配置界面> 一、创建索引模式 根据logstash中的日志规则 匹配对应系统日志 二、创建索引生命周期策略&#xff1a;可以控制生成索引的生命周期 共4个阶段&#xff1a;热阶段——温阶段——冷阶段——删除阶段 阶段1. hot: 索引被频繁写入和查…

如何让ArcGIS Pro启动显示空白页面

刚接触ArcGIS Pro的你是否会觉得在操作上有那么一些不习惯&#xff0c;从一开始软件启动就发现和ArcGIS差距很大&#xff1a;丰富的欢迎页面&#xff0c;加上默认加载的地图让你眼花缭乱&#xff0c;这里教你如何去掉这些繁杂的内容&#xff0c;还你一个干净的启动页面。 跳过…

一文弄懂SpringCloud Stream

目录 SpringCloud StreamSpringCloud Stream相关概念SpringCloud Stream使用 SpringCloud Stream Spring Cloud Stream 是一个构建消息驱动微服务的框架&#xff0c;Spring Cloud Stream 提供了一个抽象层&#xff0c;屏蔽了不同消息中间件之间的差异&#xff0c;使得开发人员…

Python 日志模块 logging 的最佳实践,内容干练简洁

文章目录 1. 引言2. 定义日志类3. 引用日志4. 参考 1. 引言 每次写 python 代码&#xff0c;想找一个日志模块 logging 的最佳实践&#xff0c;都要找一大圈&#xff0c;确不一定可以找到合适的最佳实践。 痛定思痛&#xff0c;我决定下笔记录目前觉得合适的 python 日志的用…

全志R128 SDK架构与目录结构

R128 S2 是全志提供的一款 M33(ARM)C906(RISCV-64)HIFI5(Xtensa) 三核异构 SoC&#xff0c;同时芯片内部 SIP 有 1M SRAM、8M LSPSRAM、8M HSPSRAM 以及 16M NORFLASH。本文档作为 R128 FreeRTOS SDK 开发指南&#xff0c;旨在帮助软件开发工程师、技术支持工程师快速上手&…

基于uniapp封装的card容器 带左右侧两侧标题内容区域

代码 <template><view class"card"><div class"x_flex_header"><div><title v-if"title ! " class"title" :title"title" :num"num"></title></div><div><s…

x-cmd pkg | magick - 开源图像处理工具

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 magick 是由 ImageMagick 提供的一个功能强大且多功能的开源图像处理工具&#xff0c;可以灵活高效地处理图像文件&#xff0c;例如格式转换、图像大小调整、图像裁减、图像拼接、图像色彩校正和图像合成等常见的图像…

云化XR技术于农业领域中的表现

随着科技的不断发展和应用的深入&#xff0c;农业领域也在逐渐引入新技术来优化生产效率和成本、改进管理和监控等。云化XR&#xff08;CloudXR&#xff09;作为一种融合了云计算、虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;等技术的解决方案&am…

【教程】代码混淆详解

【教程】代码混淆详解 本文将对代码混淆进行详细解释&#xff0c;并介绍ProGuard代码混淆器以及Ipa Guard工具的使用方法。首先&#xff0c;我们将了解代码混淆的概念和作用&#xff0c;然后深入讨论ProGuard混淆文件的参数设置以及代码混淆的方法。接着&#xff0c;我们将介绍…

【node link】Node命令中的node link命令的使用,还有CLI全局命令的使用,开发命令行工具必不可少的部分

&#x1f601; 作者简介&#xff1a;一名大四的学生&#xff0c;致力学习前端开发技术 ⭐️个人主页&#xff1a;夜宵饽饽的主页 ❔ 系列专栏&#xff1a;NodeJs &#x1f450;学习格言&#xff1a;成功不是终点&#xff0c;失败也并非末日&#xff0c;最重要的是继续前进的勇气…

【RabbitMQ】3 RabbitMQ使用及交换机

目录 代码示例交换机概述无名交换机绑定&#xff08;binding&#xff09;交换机的类型FanoutDirectTopic 官网地址&#xff1a;https://www.rabbitmq.com/getstarted.htm 代码示例 先来看下如何使用rabbitmq&#xff1a; 使用 Java 编写两个程序&#xff0c;发送单个消息的生…

10年工作经验老程序员推荐的7个开发类工具

做.NET软件工作已经10年了&#xff0c;从程序员做到高级程序员&#xff0c;再到技术主管&#xff0c;技术总监。见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio Team System 2008, Visual Studio 2010 Ultimate,Visual Studio 2013一系列近5个版本的变化与亲…