Qt QLineEdit详解

news2024/12/24 2:07:51

1.简介

QLineEdit是一个单行文本编辑器。
行编辑允许用户使用一组有用的编辑功能输入和编辑单行纯文本,包括撤消和重做、剪切和粘贴以及拖放。
通过更改行编辑的echoMode,它也可以用作“只写”字段,用于密码等输入。
文本的长度可以限制为maxLength,文本可以使用validator或inputMask进行任意约束,也可以同时使用这两种方法。在同一行编辑的validator和inputMask之间切换时,最好清除validator或输入mask,以防止出现未定义的行为。

一个相关的类是QTextEdit,它允许多行富格文本编辑。

默认键被绑定描述如下。输入框还提供了一些编辑选项的上下文菜单(通常通过单击鼠标右键调用)。

按键动作
Left Arrow光标左移一个字符
Shift+Left Arrow光标左移并选择一个字符
Right Arrow光标右移一个字符
Shift+Right Arrow光标右移并选择一个字符
Home将光标移动到行的开头
End将光标移动到行的末尾
Backspace删除光标左侧字符
Ctrl+Backspace删除光标左侧的单词
Delete删除光标右侧字符
Ctrl+Delete删除光标右侧的单词
Ctrl+A全选
Ctrl+C复制选中的文本复制到剪贴板
Ctrl+Insert复制选中的文本复制到剪贴板
Ctrl+K删除此处至末尾所有内容
Ctrl+V粘贴剪贴板的文本到输入框中
Shift+Insert粘贴剪贴板的文本到输入框中
Ctrl+X剪切选中的文本到剪贴板
Shift+Delete剪切选中的文本到剪贴板
Ctrl+Z撤销上一次操作
Ctrl+Y重做上一次操作

2.常用方法

  • clear(): 清除 QLineEdit中的文本。
  • setText(const QString &): 设置 QLineEdit 中的文本。
  • text() const: 获取 QLineEdit 中的文本。
  • setMaxLength(int): 设置文本的最大长度。
  • maxLength() const: 获取文本的最大长度。
  • setEchoMode(EchoMode): 设置文本的显示方式。
  • echoMode() const: 获取文本的显示方式。
  • setReadOnly(bool): 设置 QLineEdit 是否为只读。
  • isReadOnly() const: 检查 QLineEdit 是否为只读。
  • setPlaceholderText(const QString &): 设置占位文本。
  • placeholderText() const: 获取占位文本。
  • setInputMask(const QString &): 设置输入掩码。
  • inputMask() const: 获取输入掩码。
  • setAlignment(Qt::Alignment): 设置文本的对齐方式。
  • alignment() const: 获取文本的对齐方式

枚举:QLineEdit::EchoMode 描述输入框如何显示其内容。

常量描述
QLineEdit::Normal0正常显示输入的字符,默认选项。
QLineEdit::NoEcho1不显示任何输入,常用于密码类型,其密码长度都需要保密的时候。
QLineEdit::Password2显示平台相关的密码掩码字符,而不是实际的字符输入。
QLineEdit::PasswordEchoOnEdit3在编辑的时候显示字符,负责显示密码类型。

下表列出了可在一个输入掩码中使用的字符,setInputMask调用。

字符含义
AASCII字母字符是必须的,A-Z、a-z。
aASCII字母字符是允许的,但不是必须的。
NASCII字母字符是必须的,A-Z、a-z、0-9。
nASCII字母字符是允许的,但不是必须的。
X任何字符都是必须要的。
x任何字符都是允许的,但不是必须要的。
9ASCII数字是必须要的,0-9。
0ASCII数字是允许的,但不是必须要的。
DASCII数字是必须要的,1-9。
dASCII数字是允许的,但不是必须要的 (1-9)。
#ASCII数字或加/减符号是允许的,但不是必须要的。
H十六进制数据字符是必须要的,A-F、a-f、0-9。
h十六进制数据字符是允许的,但不是必须要的。
B二进制数据字符是必须要的,0-1。
b二进制数据字符是允许的,但不是必须要的。
>所有的字符字母都大写
<所有的字符字母都小写
!关闭大小写转换
\使用 \ 去转义上述列出的字符。

常用信号:

  • textChanged(const QString &): 当文本发生变化时发出此信号。
  • textEdited(const QString &): 当文本被编辑(用户输入)时发出此信号。
  • cursorPositionChanged(int, int): 当光标位置发生变化时发出此信号。
  • editingFinished(): 当编辑完成时发出此信号,通常是在用户按下回车键或 QLineEdit 失去焦点时。

3.示例

示例1:用户登录界面

设置占位符,设置密码模式。

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->leUserName->setPlaceholderText("请输入用户名");
    ui->lePasswd->setPlaceholderText("请输入密码");

    ui->lePasswd->setEchoMode(QLineEdit::Password);
}

Widget::~Widget()
{
    delete ui;
}
示例2:设置mask或者正则表达式

 

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    ui->leIp->setInputMask("000.000.000.000");
    ui->leMac->setInputMask("HH:HH:HH:HH:HH:HH");

    //新建整数验证器
    QIntValidator *intVali = new QIntValidator(0, 10);
    //设置
    ui->leValidator->setValidator(intVali);
}

Widget::~Widget()
{
    delete ui;
}
示例3:设置自动补全

#include "widget.h"
#include "ui_widget.h"
#include <QCompleter>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    //年份列表
    QStringList listName;
    listName<<"李四"<<"李思"<<"李丽";

    //补全器
    QCompleter *cp = new QCompleter(listName);
    //设置给 lineEditYear
    ui->lineEdit->setCompleter(cp);
}

Widget::~Widget()
{
    delete ui;
}
示例4:自定义搜索框

#include "widget.h"
#include "ui_widget.h"
#include <QCompleter>

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);

    ui->leSearch->setPlaceholderText("请输入搜索关键词");

    ui->leSearch->setStyleSheet("QLineEdit"
                                "{"
                                "color: rgb(75,79,81); "
                                "font: 75 14px; border: 0px solid rgb(13, 65, 119);"
                                "border-radius: 3px;"
                                "background:rgb(255,255,255);"
                                "selection-background-color: rgb(36,37,39);"
                                "}"
                                "QLineEdit:hover"
                                "{"
                                "border: 1px solid rgb(13, 65, 119);"
                                "}"
                                );

    ui->btnSearch->setStyleSheet(
            "QToolButton{border-image: url(:/btn_search_normal.png);}"
            "QToolButton:hover{border-image: url(:/btn_search_hover.png);}"
            "QToolButton:pressed{border-image: url(:/btn_search_press.png);}"
            );
}

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

4.更多推荐

libVLC 专栏介绍-CSDN博客

Qt+FFmpeg+opengl从零制作视频播放器-1.项目介绍_qt opengl视频播放器-CSDN博客

QCharts -1.概述-CSDN博客

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

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

相关文章

【每日刷题】Day28

【每日刷题】Day28 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; ​ 1. 121. 买卖股票的最佳时机 - 力扣&#xff08;LeetCode&#xff09; 2. 205. 同构字符串 - 力扣…

充电桩---ISO15118协议详细介绍

一、ISO15118介绍 1、发展背景 标准于 2010 年由国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;IEC&#xff09;通过&#xff0c;电动汽车和充电站之间的通信&#xff0c;改善了不同品牌、型号和充电类型&#xff08;交流或直流&#xff09;之间的互…

React配置@别名路径配置

1. 背景知识 路径解析配置&#xff08;webpack&#xff09;&#xff0c;把 / 解析为 src/路径联想配置&#xff08;VsCode&#xff09;&#xff0c;VsCode 在输入 / 时&#xff0c;自动联想出来对应的 src/下的子级目录 2. 路径解析配置 配置步骤&#xff1a; 安装craco npm …

K8s: Prometheus 服务结构以及基础抓取数据服务部署

Prometheus 发布应用之后&#xff0c;就有持续运维的事情&#xff0c;就是平台监控Prometheus 是一个云原生的日志监控平台&#xff0c;是一个实时标准的一个技术它是著名的 cncf 里的一个重要的开源项目 上面整个图片是在云原生应用及K8s应用架构下的一个日志监控的一个标准的…

用数据说话,还你一个SSD和HDD的真相

【全球存储观察 &#xff5c; 热点关注】在全球数据存储领域&#xff0c;NAND盖楼大赛从来就没有消停过&#xff0c;为什么&#xff1f; 纵观全球NAND主流供应商&#xff0c;三星电子、铠侠、美光科技、SK海力士等&#xff0c;基于自己在闪存技术积累与创新&#xff0c;纷纷热…

nginx--安装

yum安装 官方包链接&#xff1a;nginx: Linux packages 官方yum源链接&#xff1a;nginx: Linux packages 配置yum源 [rootlocalhost ~]# yum install -y nginx [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gp…

【论文阅读】ELAN-Efficient Long-Range Attention Network for Image Super-resolution

ELAN-Efficient Long-Range Attention Network for Image Super-resolution 论文地址简介1 引言2相关工作2.1 基于 CNN 的 SR 方法2.2 基于 Transformer 的 SR 方法 3 方法论3.1 ELAN 的整体流程3.2 Efficient Long-range Attention Block (ELAB) 4实验4.1实验设置4.2 与轻量级…

从注册到订阅,Midjourney使用指南,你想知道的都有

Midjourney简介 Midjourney官网&#xff1a;https://www.midjourney.com/home 是一个独立的研究实验室&#xff0c;专注于探索新的思维方式和扩展人类的想象力。它由一个小型的自筹资金团队组成&#xff0c;该团队专注于设计、人类基础设施和人工智能。Midjourney拥有11名全职…

ipad的文件如何传到手机里 iPad较大文件怎么发送出去 iMazing下载教程

在现代生活中&#xff0c;随着移动设备的普及和多样化&#xff0c;我们经常需要在不同设备之间传输文件&#xff0c;以便在工作、学习或娱乐中更加便捷地使用这些文件。iPad和iPhone是用户广泛使用的设备&#xff0c;我们时常使用它们来存储和访问大量的个人数据。但有时&#…

安装 AngularJS

安装 AngularJS 文章目录 安装 AngularJS1. 使用在线 cdn2. 使用依赖管理工具 npm 1. 使用在线 cdn <!-- 1. 引入在线地址 --> <script src"http://code.angularjs.org/1.2.25/angular.min.js"></script><!-- 2. 下载到本地&#xff0c;引入文…

Apache Seata基于改良版雪花算法的分布式UUID生成器分析2

title: 关于新版雪花算法的答疑 author: selfishlover keywords: [Seata, snowflake, UUID, page split] date: 2021/06/21 本文来自 Apache Seata官方文档&#xff0c;欢迎访问官网&#xff0c;查看更多深度文章。 关于新版雪花算法的答疑 在上一篇关于新版雪花算法的解析中…

Django框架视图基础

本节主要介绍Django框架视图的基础知识。Django视图层是负责处理请求的核心&#xff0c;是开发Web应用的重要组成部分。Django视图层代码可以放在应用目录下的任何位置&#xff0c;通常写在类似views.py这样的文件中。 在Django框架视图层的概念体系中&#xff0c;视图函数简称…

探索项目管理系统:解析五大功能,洞悉项目成功的关键

项目管理新手往往喜欢埋头苦干&#xff0c;殊不知优秀的项目经理已经熟练运用项目管理系统&#xff0c;让项目规划条理清晰。项目管理系统具备的功能&#xff0c;好用的项目管理系统都有这5大功能。分别是项目WBS分解、项目图表和报表、工时管理、团队协作、任务流程自动化。 一…

react报错:Warning: Each child in a list should have a unique “key“ prop.

我是万万没想到的&#xff0c;使用Popconfirm不添加key属性也会报错&#xff1a; react-refresh:160Warning: Each child in a list should have a unique "key" prop. Check the render method of Cell. Seehttps://reactjs.org/link/warning-keys for more informa…

每日论文推荐:LLaMA3的低比特量化效果详细总结

&#x1f4cc; 元数据概览&#xff1a; 标题&#xff1a;这篇论文的标题是“How Good Are Low-bit Quantized LLAMA3 Models? An Empirical Study”&#xff0c;它可能探讨的是低比特权量化技术在LLAMA3模型上的应用效果和性能。作者&#xff1a;论文的作者包括来自香港大学、…

接字符串注入攻击简介

连接字符串注入攻击简介 什么是连接字符串注入攻击&#xff1f; 连接字符串注入攻击是一种安全攻击类型&#xff0c;攻击者通过修改应用程序使用的数据库连接字符串来注入恶意内容。连接字符串是包含数据库连接所需数据&#xff08;如服务器地址、数据库名、用户名和密码等&a…

升级价值主张 用友帮企业找到乘风破浪的“密码”

近期&#xff0c;用友发布了其战略级产品用友BIP的全新价值主张&#xff0c;将其从原来的“企业数智化 用友BIP”升级为“用友BIP 成就数智企业”。用友这次价值主张升级看似变动不大&#xff0c;实则大有深意。 顺势而为的主动升级 从当前数智化发展的形势来看&#xff0c;各…

c语言从入门到函数速成(1)

温馨提醒&#xff1a;本篇文章适合人群&#xff1a;刚学c又感觉那个地方不怎么懂的同学以及以及学了一些因为自身原因停学一段时间后又继续学c的同学 好&#xff0c;正片开始。 主函数 学c时最先学的是我们c语言程序的主体函数&#xff0c;c的主函数有两种写法&#xff0c;这…

Leetcode | 以二叉树,多叉树为主题的理论,真题以及图解【更新中】

1.理论 1.1.二叉树 1.1.1.二叉树的遍历 前序(preorder traversal)&#xff1a;从根节点开始&#xff0c;先访问当前节点&#xff0c;然后递归地遍历左子树&#xff0c;最后递归地遍历右子树。即“根-左-右”的顺序。 中序遍历(inorder traversal)&#xff1a;从根节点开始&…

mysql面试题九(SQL优化)

目录 1.一条 SQL 是如何执行的 2.索引失效的几种情况 3.EXPLAIN 4.Where 子句如何优化 5.超大分页或深度分页如何处理 6.大表查询如何优化 7.分库分表 基本概念 分库分表方法 水平拆分 垂直拆分 分库分表后的注意事项 1.一条 SQL 是如何执行的 在MySQL中&#xff0…