2.4.1QT输入控件组之Line Edit

这篇具有很好参考价值的文章主要介绍了2.4.1QT输入控件组之Line Edit。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2.4.1QT输入控件组之Line Edit



ui界面的输入控件组

qt line控件,QT,嵌入式学习,C++,qt,c++,嵌入式硬件

  1. Combo Box:组合框
  2. Font Combo Box:字体组合框
  3. Line Edit:单行编辑框
  4. Text Edit:多行文本编辑框
  5. Plain Text Edit:纯文本编辑
  6. Spin Box:整数显示框
  7. Double Spin Box:浮点数显示框
  8. Time Edit:时间编辑
  9. Data Edit:日期编辑
  10. Data/Time Edit:日期/时间编辑器
  11. Dial:转盘(刻度盘)
  12. Horizontal Scroll Bar:横向滚动条
  13. Vertical Scroll Bar:垂直滚动条
  14. Horizontal Slider:横向滑块
  15. Vertical Slider:垂直滑块
  16. Key Sequence Edit:设置快捷键

提示:以下是本篇文章正文内容,下面案例可供参考

2.4.1lineEdit单行文本编辑器

使用场景:用户名,密码输入框,搜索框等。

头文件:#include<QLineEdit>

2.4.1.1常用的成员函数

1、文本设置函数

QString text() const	获取文本数据
void setText(const QString &)	设置文本数据

2、文本的最大允许长度

int maxLength() const 	获取文本最大允许的长度
void setMaxLength(int)	设置文本最大允许的长度

注意:lineEdit控件的文本长度默认是32767,超出限制就无法进行输入

3、设置文本显示

在输入密码时,不想让文本内容显示出来,可以设置文本显示的方式

EchoMode echoMode() const 获取文本显示的模式
void setEchoMode(EchoMode) 设置文本显示的模式

EchoMode模式枚举类型:

常量 数字 描述
QLineEdit::Normal 0 默认显示模式,输入什么内容就显示什么内容。
QLineEdit::NoEcho 1 不显示任何内容,Unix/Linux 下常用的密码显示模式。
QLineEdit::Password 2 输入的每一个字符都用星号显示。
QLineEdit::PasswordEchoOnEdit 3 输入一个字符时,短暂显示该字符,然后迅速将该字符显

4、设置只读属性

bool isReadOnly() const 获取属性 true 表示只读,false 表示可读可编辑
void setReadOnly(bool) 设置属性 true 表示只读,false 表示可读可编辑

在只读模式下,用户仍然可以将文本复制到剪贴板或拖放文本,但不能编辑它。属性默认为(false)表示可读可编辑。

2.4.1.2常用的槽函数(已经实现)

void setText(const QString &) 设置显示的文本,会清除之前的显示
void clear() 清除显示内容
void copy()const 复制 Ctrl+C,将选中的文本复制到剪贴板
void cut() 剪切 Ctrl+X,将选中的文本复制到剪贴板并删除它
void paste() 粘贴 Ctrl+V,在光标位置插入剪贴板的文本,删除选中的文本
void redo() 撤销当前操作,返回到下一步操作与 undo()相反。
void selectAll() 全选 Ctrl+A
void undo() Ctrl+Z 撤销当前操作,返回上一步操作

2.4.1.3常用信号

右键单击LineEdit转到槽就可以看见常见的信号

1、textChanged 信号:当文本内容发生改变时触发,通过图形界面方式和代码方式改变文本都可以触发。

void textChanged(const QString & text)

2、textEdited 信号:当文本内容发生改变时触发,只限于图形界面方式进行改变文本,代码方式改变文本不会触发。

void textEdited(const QString & text)

3、editingFinished 信号:文本编辑结束时触发。

比如:在单行编辑控件里按了回车键或者该控件失去输入焦点(用户转到其他控件操作)。

void editingFinished()

4、cursorPositionChanged 信号:当光标发生改变时触发

void cursorPositionChanged(int old, int new)

old 表示前一次光标所在的位置,new 表示当前光标所在的位置。

5、selectionChanged 信号:选中编辑框里的文本时触发,可以用 selectedText()函数获取选中的文本。

void selectionChanged()

6、returnPressed 信号:在文本编辑框内按下回车键时触发。

void returnPressed()

2.4.1.4数据校验器

在用户输入文本内容时,可以用数据验证用户输入的数据是否正确。

1、单行编辑控件自带的输入模板 inputMask:

QString inputMask() const 获取已设置的模板,如果没有设置,返回空字符串
void setInputMask(const QString & inputMask) 设置输入模板

模板可输入的字符列表:

字符 描述
A 允许输入 ASCII 字母。A - Z、a - z 。占位的字符不可以省略.
a 允许输入 ASCII 字母。A - Z、a - z 。占位的字符可以省略。
N 允许输入 ASCII 字母数字字符。a - z、a - z 0 - 9。占位的字符不可以省略.
n 允许输入 ASCII 字母数字字符。a - z、a - z 0 - 9。占位的字符可以省略。
X 允许输入任何字符。 占位的字符不可以省略.
x 允许输入任何字符。 占位的字符可以省略。
9 允许输入 ASCII 数字。0 - 9。占位的字符不可以省略.
0 允许输入 ASCII 数字。0 - 9。占位的字符可以省略。
D 允许输入 ASCII 数字。1 - 9。占位的字符不可以省略.
d 允许输入 ASCII 数字。1 - 9。占位的字符可以省略。
# 允许输入 ASCII 数字 或 + -
H 允许输入十六进制字符。 A-F、a-f、 0-9。占位的字符不可以省略。
h 允许输入十六进制字符。 A-F、a-f、 0-9。占位的字符可以省略。
B 允许输入二进制字符。0 - 1。占位的字符不可以省略
b 允许输入二进制字符。0 - 1。占位的字符可以省略。
> 将所有的字母转为大写字母。
< 将所有的字母转为小写字母。
!
\

2、整型数值验证器

针对整数数值,可以用 QIntValidator 类作为验证器,使用该类需要包含头文件#include <QIntValidator>,该

类常用构造函数:

QIntValidator::QIntValidator(int minimum, int maximum, QObject * parent = 0)

参数解析:

Minimum :整数下限

Maximum :整数上限

Parent :父窗口指针

只允许边界范围之内的数值输入。

1)修改上下限函数:

void QIntValidator::setRange(int bottom, int top)

参数解析:

Bottom :整数下限

top :整数上限

2)单行编辑输入验证器设置函数:

void QLineEdit::setValidator(const QValidator * v)

示例:

//设置输入范围在 0-100 之间
QIntValidator *line_Validator =new QIntValidator(0,100,this);
ui->lineEdit_a->setValidator(line_Validator);

2.4.1.5浮点数值验证器

针对浮点数校验,由 QDoubleValidator 类实现,使用该类需要包含头文件#include<QDoubleValidator> ,该类常用的构造函数:

QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals, QObject * parent = 0)

参数解析:

Bottom :浮点数下限

Top :浮点数上限

Decimals :小数点后的数字位数限定(精度)

Parent :父窗口指针

注意:只允许边界范围之内的数值输入。

示例:

//浮点数限制范围 0.00 至 99.99 ,精度是 2 位

QDoubleValidator *line_Validator =new QDoubleValidator(0.00,99.99,2,this);

ui->lineEdit_a->setValidator(line_Validator);

2.4.1.6正则表达式验证器

正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是最为强大的数据验证和数据筛选武器。各种编程语言基本都有支持正则表达式的类库,Qt 提供 QRegExp 类支持正则表达式,正则表达式的验证器类为 QRegExpValidator。

使用 QRegExpValidator 类需要加载#include <QRegExpValidator>头文件。

  1. 正则表达式构造函数:
QRegExpValidator::QRegExpValidator(const QRegExp & rx, QObject * parent = 0)

参数解析:

QRegExp :构造正则表达式对象给定模式的字符串类

parent :父窗口指针

  1. 使用 QRegExp 类需要加载#include <QRegExp>头文件,QRegExp 类常用的构造函数如下:
QRegExp::QRegExp(const QRegExp & rx)
QRegExp::QRegExp(const QString & pattern, Qt::CaseSensitivity cs = Qt::CaseSensitive, PatternSyntax syntax = 
RegExp)

参数解析:

Pattern :正则表达式字符串

Cs :决定大小是否敏感,默认是敏感

syntax :语法格式

枚举 enum Qt::CaseSensitivity:

常数 数值 描述
Qt::CaseInsensitive 0 不敏感
Qt::CaseSensitive 1 敏感

使用正则表达式示例:

QRegExp rx("-?\\d{1,3}"); //只能输入 3 个数字。

QValidator *validator = new QRegExpValidator(rx, this);

QLineEdit *edit = new QLineEdit(this);

edit->setValidator(validator);

2.4.1.7LineEdit自动补全功能

在进行文本编辑时,编辑器常用的一个功能就是自动补全,比如 Linux 系统命令行里面输入命令或文件名头几个字符,然后按 Tab 键就会实现命令或文件名的补全。单行编辑控件也有类似功能,可以通过设置QCompleter 实现。根据 QLineEdit 的输入 QComplete 可以实现自动补全的功能,根据单词列表提示完成单词输入,也可补全文件路径。

1、QCompleter头文件

#include <QCompleter>

2、QCompleter 常用的构造函数

QCompleter::QCompleter(QAbstractItemModel * model, QObject * parent = 0)
QCompleter::QCompleter(const QStringList & list, QObject * parent = 0)

参数解析:

parent :父对象指针

model :数据条目的模型

List :字符串列表 (根据一个字符串列表来生成单词补全器)

使用 List 字符串列表需要加载#include <QStringList>头文件,使用 List 字符串列表时常用到的排序函数:

void QStringList::sort(Qt::CaseSensitivity cs = Qt::CaseSensitive)

参数解析:

cs 排序时大小写是否敏感,默认是敏感。一般用做字符数字字符串排序,中文字符串不需要排序。

3、大小写区分设置函数

Qt::CaseSensitivity caseSensitivity() const 返回设置的值
void setCaseSensitivity(Qt::CaseSensitivity caseSensitivity) 设置是否区分大小写,默认是区分大小写

Qt::CaseSensitivity 枚举类型有两个枚举常量:

常数 数值 描述
Qt::CaseInsensitive 0 不敏感
Qt::CaseSensitive 1 敏感

4、设置匹配单词显示的模式

CompletionMode completionMode() const 获取显示的模式
void setCompletionMode(CompletionMode mode) 设置显示的模式

CompletionMode 是一个枚举类型,有三个枚举常量:

常量 数值 描述
QCompleter::PopupCompletion 0 正常弹出单词列表显示
QCompleter::InlineCompletion 1 显示最接近的一个单词,不弹出候选列表
QCompleter::UnfilteredPopupCompletion 2 列出所有可能的单词,不进行匹配筛选

5、单行编辑器设置自动补全功能

void QLineEdit::setCompleter(QCompleter * c)

如果 c 是有效的自动补全器,c 就会设置给单行编辑器;如果 c 等于 NULL,将会取消单行编辑控件之前的自动补全器。

示例:

QStringList listyear;

listyear<<"2012"<<"2013"<<"2014"<<"2015"; //年份列表

QCompleter *year = new QCompleter(listyear);//构建自动补全器

ui->lineEdit->setCompleter(year); //设置自动补全器功能
  • 示例:实现用户登录界面

1、ui界面设置

使用的控件:Lable标签(账号,密码),LineEdit单行编辑器(账号,密码的输入),PushButton按钮(账号密码输入后点击登录按钮)

下图可以改进的地方是页面布局,可以采用水平布局和垂直布局
qt line控件,QT,嵌入式学习,C++,qt,c++,嵌入式硬件

2、效果实现
qt line控件,QT,嵌入式学习,C++,qt,c++,嵌入式硬件
qt line控件,QT,嵌入式学习,C++,qt,c++,嵌入式硬件

代码如下

  • pro文件
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    widget.cpp

HEADERS += \
    widget.h

FORMS += \
    widget.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

  • widget.h文件
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_pushButton_clicked();

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

  • main.cpp文件
#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

  • widget.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include<QCompleter>//自动补全功能的头文件
#include<QMessageBox>//消息对话框
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    //1.设置密码的显示模式---setEchoMode()函数
    //QLineEdit::Password--输入的每一个字符都用星号表示
    //QLineEdit::Normal--默认显示模式,输入什么内容就显示什么内容。
    //QLineEdit::NoEcho--不显示任何内容,Unix/Linux 下常用的密码显示模式。
    //QLineEdit::PasswordEchoOnEdit--**输入一个字符时,短暂显示该字符,然后迅速将该字符显**
    ui->lineEdit_password->setEchoMode(QLineEdit::Password);

    //2.构建账号补全列表
    QStringList listnumber;
    listnumber<<"12345"<<"12314"<<"24526"<<"2789665";

    //3.构建补全器
    QCompleter *number = new QCompleter(listnumber);

    //4.设置账号单行编辑器
    ui->lineEdit->setCompleter(number);

}

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


void Widget::on_pushButton_clicked()
{

    //实际运用中可以通过 QCryptographicHash 类进行加密
    QString password_info;
    password_info+=tr("账号:");
    password_info+=ui->lineEdit->text();

    password_info+="\n";
    password_info+=("密码:");
    password_info+=ui->lineEdit_password->text();
    password_info+="\n";
    QMessageBox::information(this,tr("登录信息"),password_info,QMessageBox::Ok);


}

  • widget.ui文件

    <?xml version="1.0" encoding="UTF-8"?>
    <ui version="4.0">
     <class>Widget</class>
     <widget class="QWidget" name="Widget">
      <property name="geometry">
       <rect>
        <x>0</x>
        <y>0</y>
        <width>800</width>
        <height>600</height>
       </rect>
      </property>
      <property name="windowTitle">
       <string>Widget</string>
      </property>
      <widget class="QWidget" name="">
       <property name="geometry">
        <rect>
         <x>70</x>
         <y>120</y>
         <width>281</width>
         <height>181</height>
        </rect>
       </property>
       <layout class="QVBoxLayout" name="verticalLayout">
        <item>
         <layout class="QHBoxLayout" name="horizontalLayout">
          <item>
           <widget class="QLabel" name="label">
            <property name="text">
             <string>账号:</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QLineEdit" name="lineEdit"/>
          </item>
         </layout>
        </item>
        <item>
         <layout class="QHBoxLayout" name="horizontalLayout_2">
          <item>
           <widget class="QLabel" name="label_2">
            <property name="text">
             <string>密码:</string>
            </property>
           </widget>
          </item>
          <item>
           <widget class="QLineEdit" name="lineEdit_password"/>
          </item>
         </layout>
        </item>
        <item>
         <widget class="QPushButton" name="pushButton">
          <property name="text">
           <string>登录</string>
          </property>
         </widget>
        </item>
       </layout>
      </widget>
     </widget>
     <resources/>
     <connections/>
    </ui>
    
    

总结

今天学习的LineEdit单行文本编辑器,应用广泛,QQ登录界面,输入密码的显示模式四种种模式,输入账号时自动补全功能,以及在输入密码后可以进行数据验证功能。文章来源地址https://www.toymoban.com/news/detail-595862.html

到了这里,关于2.4.1QT输入控件组之Line Edit的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式学习笔记——PWM与输入捕获(下)

    上一篇介绍了通用定时器的输出比较部分,这一篇再来介绍一下输入捕获的相关内容。 输入捕获,见名知意,就用来对输入信号进行捕获的,说到捕获输入信号,之前介绍过一个叫做外部中断的片上外设,它的作用也是捕获输入;它们的不同在于,外部中断捕获的只是边沿,

    2024年02月06日
    浏览(40)
  • 嵌入式2. 深刻理解GPIO(上拉输入、下拉输入、模拟输入、浮空输入,开漏输出,推挽输出)

    目录 前言 GPIO是什么 GPIO的八大模式 输入模式 浮空输入 上拉输入 下拉输入 模拟输入 输出模式 开漏输出 推挽输出 复用开漏输出 复用推挽输出 GPIO的输出速率 学习了这么久的单片机,说来羞愧,直到写这篇文章之前,我都没有仔细去理解GPIO的八种使用模式,之前只是傻傻的

    2024年02月04日
    浏览(39)
  • 嵌入式QT- QT使用MQTT

    目录 一、MQTT介绍 二、MQTT概念   2.1 订阅(Subscribtion)   2.2 会话(Session)   2.3 主题名(Topic Name)    2.4 主题筛选器(Topic Filter)    2.5 消息订阅 三、MQTT中的角色 3.1 客户端 3.2 服务器 四、X86平台安装mosquitto 4.1 下载 mosquitto 服务器 4.2 下载 mosquitto 客户端 4.3 mosquitto 命令

    2024年02月13日
    浏览(48)
  • 嵌入式Qt 第一个Qt项目

    打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项   弹出New Project对话框,选择Qt Widgets Application 选择【Choose】按钮,弹出如下对话框 设置项目名称和路径,按照向导进行下一步   选择编译套件 向导会默认添加一个继承自QMainWindow的类,可

    2024年02月20日
    浏览(46)
  • 嵌入式QT (Qt 信号与槽)

    因为有了信号与槽的编程机制,在 Qt 中处理界面各个组件的交互操作时变得更加直观和简单。 信号 (Signal)就是在特定情况下被发射的事件。 GUI 程序设计的主要内容就是对界面上各组件的信号的响应,只需要知道什么情况下发射哪些信号,合理地去响应和处理这些信号就

    2024年02月02日
    浏览(48)
  • 【嵌入式——QT】容器类

    Qt提供了基于模板的容器类,这些容器类可以用于存储指定类型的数据项,Qt的容器类比标准模板库(STL)中的容器类更轻巧、安全和易于使用。它们还是线程安全的,它们作为只读容器时可被多个线程访问。 容器类是基于模板的类,如常用的容器类QList,T是一个具体的类型,可

    2024年02月22日
    浏览(47)
  • 嵌入式Qt Qt中的信号处理

    Qt消息模型: - Qt封装了具体操作系统的消息机制 - Qt遵循经典的GUI消息驱动事件模型 Qt中定义了与系统消息相关的概念;   Qt中的消息处理机制: Qt的核心 QObject::cinnect函数: Qt中的“新”: 实验1 初探信号与槽   运行结果: - 只有QObject的子类才能自定义槽 - 定义槽的

    2024年02月22日
    浏览(51)
  • 【蓝桥杯】【嵌入式组别】第十三节:PWM输入捕获编程

    目的就是测量输入到特定管脚上的PWM波的频率和占空比。 下面是PWM部分的电路图: PWM由XL555芯片产生,由滑动变阻器R40连接到PA15,滑动变阻器不同的阻值对应不同的PWM波的频率。下面一个也是一样的原理。 可以看到板子上的PA15引脚的功能分别有:TIM2_CH1和TIM8_CH1,我们在板

    2023年04月11日
    浏览(101)
  • 嵌入式 QT 界面布局管理

    目录 1、实例程序功能 2、界面组件布局 2.1 界面组件的层次关系 2.2 布局管理 2.3 伙伴关系和Tab顺序       创建一个 Widget Application 项目 samp2_2, 在创建窗体时选择基类 QDialog ,生成的类命名为 QWDialog ,并选择生成窗体。     如 此 新建 的项 目 samp2_2 有一 个界 面文 件 qwdi

    2024年02月04日
    浏览(50)
  • 【嵌入式Qt开发入门】初识Qt——Linux下安装Qt

            Qt 是一个跨平台的 C++开发库。主要用来开发图形用户界面(Graphical User Interface,简 称 GUI)程序。         Qt 虽然经常被当做一个 GUI 库,用来开发图形界面应用程序,但这并不是 Qt 的全部; Qt 除了可以绘制漂亮的界面(包括控件、布局、交互),还包含很多

    2024年02月16日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包