Qt QLineEdit文本框控件

2024-01-09 04:28
文章标签 qt 控件 文本框 qlineedit

本文主要是介绍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) {// 字符转intint sum = arg1.toInt() + ui->leAdd2->text().toInt();// 数字转字符串ui->leSum->setText(QString::number(sum));
}void Widget::on_leAdd2_textChanged(const QString &arg1) {// 字符转intint 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));
}

这篇关于Qt QLineEdit文本框控件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/585917

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

【QT】基础入门学习

文章目录 浅析Qt应用程序的主函数使用qDebug()函数常用快捷键Qt 编码风格信号槽连接模型实现方案 信号和槽的工作机制Qt对象树机制 浅析Qt应用程序的主函数 #include "mywindow.h"#include <QApplication>// 程序的入口int main(int argc, char *argv[]){// argc是命令行参数个数,argv是

lvgl8.3.6 控件垂直布局 label控件在image控件的下方显示

在使用 LVGL 8.3.6 创建一个垂直布局,其中 label 控件位于 image 控件下方,你可以使用 lv_obj_set_flex_flow 来设置布局为垂直,并确保 label 控件在 image 控件后添加。这里是如何步骤性地实现它的一个基本示例: 创建父容器:首先创建一个容器对象,该对象将作为布局的基础。设置容器为垂直布局:使用 lv_obj_set_flex_flow 设置容器

Python QT实现A-star寻路算法

目录 1、界面使用方法 2、注意事项 3、补充说明 用Qt5搭建一个图形化测试寻路算法的测试环境。 1、界面使用方法 设定起点: 鼠标左键双击,设定红色的起点。左键双击设定起点,用红色标记。 设定终点: 鼠标右键双击,设定蓝色的终点。右键双击设定终点,用蓝色标记。 设置障碍点: 鼠标左键或者右键按着不放,拖动可以设置黑色的障碍点。按住左键或右键并拖动,设置一系列黑色障碍点

使用Qt编程QtNetwork无法使用

使用 VS 构建 Qt 项目时 QtNetwork 无法使用的问题 - 摘叶飞镖 - 博客园 (cnblogs.com) 另外,强烈建议在使用QNetworkAccessManager之前看看这篇文章: Qt 之 QNetworkAccessManager踏坑记录-CSDN博客 C++ Qt开发:QNetworkAccessManager网络接口组件 阅读目录 1.1 通用API函数

Qt多语种开发教程

Qt作为跨平台的开发工具,早已应用到各行各业的软件开发中。 今天讲讲,Qt开发的正序怎么做多语言开发。就是说,你设置中文,就中文显示;设置英语就英文显示,设置繁体就繁体显示,设置发育就显示法语等。 开发环境(其实多语种这块根环境没太大关系):win10,Qt.5.12.10 一.先用QtCreator创建一个简单的桌面程序 1.工程就随便命名“LanguageTest”,其他默认。 2.在设计师

小程序button控件上下边框的显示和隐藏

问题 想使用button自带的loading图标功能,但又不需要button显示边框线 button控件有一条淡灰色的边框,在控件上了样式 border:none; 无法让button边框隐藏 代码如下: <button class="btn">.btn{border:none; /*一般使用这个就是可以去掉边框了*/} 解决方案 发现button控件有一个伪元素(::after

MFC中Spin Control控件使用,同时数据在Edit Control中显示

实现mfc spin control 上下滚动,只需捕捉spin control 的 UDN_DELTAPOD 消息,如下:  OnDeltaposSpin1(NMHDR *pNMHDR, LRESULT *pResult) {  LPNMUPDOWN pNMUpDown = reinterpret_cast(pNMHDR);  // TODO: 在此添加控件通知处理程序代码    if

Qt中window frame的影响

window frame 在创建图形化界面的时候,会创建窗口主体,上面会多出一条,周围多次一圈细边,这就叫window frame窗口框架,这是操作系统自带的。 这个对geometry的一些属性有一定影响,主要体现在Qt坐标系体系: 窗口当中包含一个按钮,这个按钮的坐标系是以父元素为参考,那么这个参考是widget本体作为参考,还是window frame作为参考,这两种参考体系都存在

【Qt】定时器事件

定时器事件 在之前学习QTimer中实现了定时器的功能,而在QTimer背后是QTimerEvent定时器事件进行支撑的。在QObject中提供了一个timeEvent这个函数。 startTimer启动定时器killTimer关闭定时器 Qt 中在进⾏窗⼝程序的处理过程中,经常要周期性的执⾏某些操作,或者制作⼀些动画效果,使⽤定 时器就可以实现。所谓定时器就是在间隔⼀定时间后,去执⾏某⼀