Qt应用开发——QLineEdit

news2024/11/26 1:49:33

目录

一、概述

二、属性和方法

三、信号


一、概述

        QLineEdit允许用户输入和编辑单行纯文本,并可以使用快捷编辑功能,包括复制、粘贴、剪切和拖放。是项目开发中最常用的输入控件。

        默认键绑定描述如下。

  • Left Arrow                     //将光标向左移动一个字符。
  • Shift+Left Arrow           //将文本向左移动并选择一个字符。
  • Right Arrow                  //将光标向右移动一个字符。
  • Shift+Right Arrow        //向右移动并选择文本一个字符。
  • Home                            //将光标移动到行首。
  • End                               //将光标移动到行尾。
  • Backspace                   //删除光标左侧的字符。
  • Ctrl+Backspace           //删除光标左侧的单词。
  • Delete                           //删除光标右侧的字符。
  • Ctrl+Delete                  //删除光标右侧的单词。
  • Ctrl+A                          //全选
  • Ctrl+C                          //将选定的文本复制到剪贴板。
  • Ctrl+V                          //将剪贴板文本粘贴到行编辑中。
  • Ctrl+Insert                   //将选定的文本复制到剪贴板。
  • Ctrl+K                          //删除到行尾。 
  • Shift+Insert                 //将剪贴板文本粘贴到行编辑中。
  • Ctrl+X                          //删除所选文本并将其复制到剪贴板。
  • Shift+Delete                //删除所选文本并将其复制到剪贴板。
  • Ctrl+Z                          //撤消最后一个操作。
  • Ctrl+Y                          //重做上次未完成的操作。

二、属性和方法

 1、text 属性代表当前标签内容

QString text() const           //当前内容
void setText(const QString &)  //设置内容

2、maxLength 属性保存文本的最大允许长度。最大值为32767,如果文本太长,它将在限制处被截断。

 int maxLength() const         //获取最大长度
 void setMaxLength(int)        //设置最大长度

3、alignment 属性代表文本水平和垂直方向对齐,同一时间可以同时指定两个方向的对齐方式。默认的对齐方式为水平靠左、垂直居中。Qt::Alignment定义参考QLabel,不多描述。

Qt::Alignment alignment() const         //获取水平参数
void setAlignment(Qt::Alignment flag)   //设置水平参数
Qt::AlignLeft:         //水平靠左。
Qt::AlignRight:        //水平靠右。
Qt::AlignHCenter:      //水平居中。
Qt::AlignJustify:      //水平调整间距两端对齐。
垂直标志
Qt::AlignTop:          //垂直靠上。
Qt::AlignBottom:       //垂直靠下。
Qt::AlignVCenter:      //垂直居中。
Qt::AlignBaseline:     //垂直与基线对齐。
组合标志
Qt::AlignCenter:       两个维度的中心,等价于 Qt::AlignHCenter | Qt::AlignVCenter。

4、 EchoMode 属性代表回显模式,回显模式决定如何显示QLineEdit中输入的文本。

QLineEdit::EchoMode echoMode() const       //获取回显模式
void setEchoMode(QLineEdit::EchoMode)      //设置回显模式
  • QLineEdit::Normal                          正常显示输入的字符(默认值)
  • QLineEdit::NoEcho                         不显示任何东西,适用于连密码长度都要保密的密码。
  • QLineEdit::Password                      显示平台相关的密码掩码字符,而不是实际输入的字符。
  • QLineEdit::PasswordEchoOnEdit   编辑时显示输入的字符,否则显示密码掩码字符

5、readOnly 属性保留行编辑是否为只读。在只读模式下,不显示游标,可以将文本复制到剪贴板,或者拖放文本(当echoMode为QLineEdit::Normal),但不能编辑它。

bool isReadOnly() const            //获取是否只读
void setReadOnly(bool)             //设置是否只读

6、clearButtonEnabled 属性用于确定行编辑器在不为空时是否显示清除按钮。启用时,当QLineEdit包含一些文本时,将显示一个后面的清除按钮,否则不显示。

 bool isClearButtonEnabled() const          //获取是否显示清除按钮使能
 void setClearButtonEnabled(bool enable)    //设置是否显示清除按钮使能

    

 7、placeholderText属性保存行编辑的占位符文本。

 QString placeholderText() const             //获取占位符
 void setPlaceholderText(const QString &)    //设置占位符

8、modified 属性保存行编辑器的内容是否已被用户修改。

bool isModified() const         //获取是否被修改
void setModified(bool)          //设置是否被修改

9、cursorPosition 属性保存此行编辑的当前光标位置

 int cursorPosition() const           //获取当前光标位置
 void setCursorPosition(int)          //设置当前光标

10、displayText 属性保存显示的文本。返回值由echoMode的值决定。

如果echoMode为Normal,则返回与text()相同的结果。

如果echoMode是Password或PasswordEchoOnEdit,它返回一个大小取决于平台的密码掩码字符长度的字符串。

如果echoMode是NoEcho,则返回一个空字符串。

QString displayText() const   //获取当前实现的文本

11、dragEnabled  属性保存是否可拖动,如果用户在某些选定文本上按下并移动鼠标,则lineedit是否开始拖动,此属性将保留该属性。

bool dragEnabled() const       //获取拖动使能
void setDragEnabled(bool b)    //设置拖动使能

 

        PS:实际项目中,经常会出现需要把外部文件直接拉进QLineEdit,然后显示文件路径的情况,这时候就需要用到Drag and Drop机制。

12、frame 属性用于确定线条编辑器是否使用边框。

 bool hasFrame() const       //获取是否有边框
 void setFrame(bool)         //设置是否有边框

13、hasSelectedTex与selectedText   hasSelectedTex保存是否有选定部分或全部文本,selectedText保存所选的文本,配合使用。

bool hasSelectedText() const   //是否有选中的文本
QString selectedText() const   //获取选中的文本

14、redoAvailable 是否可重做,当用户对行编辑中的文本执行了一个或多个撤销(CTRL+Z)操作后,值变化为true,当全部重做(CTRL+Y)之后,值变化为false。

bool isRedoAvailable() const    //是否可重做

15、undoAvailable 是否可撤销,一旦用户在行编辑中修改了文本,值变化为true,全部撤销之后,值会变成false。

bool isUndoAvailable() const    //是否可撤销

16、cursorMoveStyle 属性保存此行编辑中光标的移动样式。

Qt::CursorMoveStyle cursorMoveStyle() const        //获取当前的移动样式
void setCursorMoveStyle(Qt::CursorMoveStyle style) //设置当前的移动样式
  • Qt::LogicalMoveStyle:在从左到右的文本块内,按左箭头键时减少光标位置,按右箭头键时增加光标位置。如果文本块是从右到左的,则应用相反的行为。
  • Qt::VisualMoveStyle:按下左箭头键将始终使光标向左移动,无论文本的书写方向如何。 按右箭头键将始终使光标向右移动。

17、acceptableInput 属性保存输入是否满足inputMask和验证器。默认情况下,此属性为true。

bool hasAcceptableInput() const

18、inputMask 属性保存验证输入掩码

QString inputMask() const                    //获取当前掩码,如果没有设置则有“”
void setInputMask(const QString &inputMask   //设置当前掩码,取消掩码则设置为“”

下表列出了输入掩码的占位符和字面字符,并说明其如何控制数据输入

  • A:ASCII字母字符是必须输入的(A-Z,a-z)
  • a:ASCII字母字符是允许输入的,但不是必须输入的
  • N:ASCII字母字符是必须输入的(A-Z,a-z,0-9
  • n:ASCII字母字符是允许输入的,但不是必须输入的
  • X:任何字符都是必须输入
  • x:任何字符都是允许输入的,但不是必须输入的
  • 9:ASCII数字字符是必须输入的(0-9)
  • 0:ASCII数字字符是允许输入的,但不是必须输入的
  • D:ASCII数字字符是必须输入的(1-9)
  • d:ASCII数字字符是允许输入的,但不是必须的(1-9)
  • #:ASCII数字字符与加减字符是允许输入的,但不是必须的
  • H:十六进制格式字符是必须输入的(A-F,a-f,0-9)
  • h:十六进制格式字符允许输入,但不是必须的
  • B:二进制格式字符是必须输入的(0,1)
  • b:二进制格式字符是允许输入的,但不是必须的
  • >:所有字母字符都大写
  • <:所有字母字符都小写
  • !:关闭大小写转换
  • \:使用‘\’转义上面列出的字符

Examples:

  • 000.000.000.000;                                                 //IP地址 银行卡余额
  • HH:HH:HH:HH:HH:HH;                                        //Mac地址
  • 0000-00-00;                                                         //时间
  • >AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;        //#牌照号码

19、validator 设置掩码,使用QDoubleValidator, QIntValidator, QRegExpValidator和QRegularExpressionValidator这些继承于QValidator的类进行封装,然后使用setValidator设置,也是QLineEdit设置掩码的一种方式。

const QValidator *validator() const        //获取掩码  
void setValidator(const QValidator *v)     //设置掩码

Examples:

 QValidator *validator = new QIntValidator(100, 999, this);
 QLineEdit *edit = new QLineEdit(this);
 // 输入框将会接收从100~999的自然数输入
 edit->setValidator(validator);

 QValidator *validator_double = new QIntValidator(-100, 100, this);
 QLineEdit *edit_2 = new QLineEdit(this);
 // 输入框将会接收从-100~100的整数输入
 edit_2->setValidator(validator_double);

 // regexp: optional '-' followed by between 1 and 3 digits
 QRegExp rx("-?\\d{1,3}");
 QValidator *validator_3 = new QRegExpValidator(rx, this);
 QLineEdit *edit_3 = new QLineEdit(this);
 edit_3->setValidator(validator_3);
  • "[a-zA-Z0-9]+$"                                            //限制只允许出现大小写字母和数字
  • "^-?(180|1?[0-7]?\d(\.\d{1,4})?)$"  //限制浮点数输入范围为[-180,180],小数位后4位
  • "^([1-9]|[1-9]\d|100)$"                          //限制整数输入访问[1,100]

正则表达式语法

正则表达式测试

20、Completer  自动补全器,通常与QValidator或QLineEdit::inputMask一起使用。

QCompleter *completer() const          //获取自动补全器
void setCompleter(QCompleter *c)       //设置自动补全器
 QStringList wordList;
 wordList << "alpha" << "omega" << "omicron" << "zeta";
 QLineEdit *lineEdit = new QLineEdit(this);
 QCompleter *completer = new QCompleter(wordList, this);
 completer->setCaseSensitivity(Qt::CaseInsensitive);
 lineEdit->setCompleter(completer);

三、信号

void cursorPositionChanged(int oldPos, int newPos) //光标移动时触发此信号,oldPos表示前一个位置,newPos表示新位置
void editingFinished()   //当按下回车键或行编辑失去焦点时,触发此信号
void inputRejected()     //当用户按下一个不被认为是可接受输入的键时,就会发出这个信号,比如你设置为只能输入数字,而当用户输入一个字母的时候就会触发此信号。
void returnPressed()    //按下回车键时触发此信号
void selectionChanged()   //选择发生变化时触发此信号
void textChanged(const QString &text)   //文本发生变化时触发此信号
void textEdited(const QString &text)   //文本发生编辑的时候触发此信号

        实际项目开发中最常用的就是textChanged,一般通过此信号检测用户输入,然后改变窗口状态,显示为已编辑。其他信号用的不多,可当作了解。

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

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

相关文章

Fourier变换极其应用(Brad G. Osgood)——第1章——Fourier级数

目录 第1章 Fourier级数 1.1 选择&#xff1a;“欢迎入局”(Choices: Welcome Aboard) 1.2 周期性现象(Periodic phenomena) 1.2.1 时间和空间(time and space) 1.2.1.1 时间和空间周期性在波动中最自然地结合在一起 1.2.1.2 更多关于空间的周期性例子 1.2.2 定义&…

11 简单的Thymeleaf语法

11.1 spring-boot环境准备 重要依赖&#xff1a; <!--thymeleaf--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> 11.2 转发消息不转义 就是如…

picgo Request failed with status code 404

今天写picgo的时候&#xff0c;出现了一个错误&#xff0c;如何解决&#xff1a; 这里是repo的配置出现了问题&#xff0c;不过我的是因为粗心&#xff0c;把master写成了mater&#xff0c;emmmm 这里的repo要跟仓库的地址相同就是这一块&#xff1a;把这一块填到repo就行 然…

Linux查看二进制文件

Linux查看二进制文件 hexdump、hd、od、xxd hexdump、hd 可以使用16进制、10进制、8进制、ascii码的形式查看文件。 执行 ls -al which hd就会看到hd其实只是hexdump的一个软链接。 使用man hexdump&#xff0c;可以查看hexdump的各种参数。 -b, --one-byte-octal 单字节…

使用SQL JOIN语句把来自两个或多个表的行结合起来

先创建一个表&#xff1a; 创建一个名为 websites 的表 CREATE TABLE websites ( id int, name varchar(255), url varchar(255), alexa varchar(255), country varchar(255) ); 然后给它插入一些数据&#xff08;插入了四行新数据&#xff09;&#xff1a; insert into we…

详解go的hex.Encode原理

简言 今天看nsq的messageID生成的时候&#xff0c;发现它使用了hex.Encode函数来产生编码&#xff0c;那就顺道研究一下这个编码方式。 原理 hex是16进制的意思&#xff0c;encode是进行编码的意思&#xff0c;内部实现也很简单&#xff0c;就是 每4位计算出十六进制的值&a…

Idea项目初始化配置

Idea项目初始化配置 &#x1f4d4; 千寻简笔记介绍 千寻简笔记已开源&#xff0c;Gitee与GitHub搜索chihiro-notes&#xff0c;包含笔记源文件.md&#xff0c;以及PDF版本方便阅读&#xff0c;且是用了精美主题&#xff0c;阅读体验更佳&#xff0c;如果文章对你有帮助请帮我…

Node.js: express + MySQL实现修改密码

实现修改密码&#xff0c;本篇文章实现修改密码只考虑以下几个方面&#xff1a; &#xff08;1&#xff09;&#xff0c;获取旧密码 &#xff08;2&#xff09;&#xff0c;获取新密码 &#xff08;3&#xff09;&#xff0c;将获取到的旧密码与数据库中的密码进行比对&#xf…

IC 后端 corner 介绍

在数字IC后端&#xff0c;有对晶体管的偏差建模的PVT corner&#xff0c;以及对互连线偏差建模的RC corner。 芯片的延迟一般受到三个因素的影响&#xff1a;工艺&#xff08;Process&#xff09;、电压&#xff08;Voltage&#xff09;、温度&#xff08;Temperature&#xff…

rabbitmq是什么?rabbitmq安装、原理、部署

rabbitmq是什么&#xff1f; MQ的全称是Messagee Queue&#xff0c;因为消息的队列是队列&#xff0c;所以遵循FIFO 先进先出的原则是上下游传递信息的跨过程通信机制。 RabbitMQ是一套开源&#xff08;MPL&#xff09;新闻队列服务软件由 LShift 提供的一个 Advanced Messag…

linux学成之路(基础篇)(二十一)nfs服务器

前言 NFS是Network File System的缩写&#xff0c;它是一种在计算机网络中共享文件和文件系统的协议。NFS允许不同的计算机系统之间通过网络访问、读取和写入远程文件&#xff0c;就像访问本地文件一样。它是一种基于客户端-服务器体系结构的协议&#xff0c;其中一个计算机充当…

Python(三十五)pass语句

❤️ 专栏简介&#xff1a;本专栏记录了我个人从零开始学习Python编程的过程。在这个专栏中&#xff0c;我将分享我在学习Python的过程中的学习笔记、学习路线以及各个知识点。 ☀️ 专栏适用人群 &#xff1a;本专栏适用于希望学习Python编程的初学者和有一定编程基础的人。无…

excel中的vlookup如何实现根据多个条件查找?

目录 简述问题公式思路通用公式三条件查找公式实例 简述 Excel 中根据一个条件查找非常方便&#xff0c;Excel 提供了内置函数 VLOOKUP。但是实际中往往有多种情形&#xff0c;需要根据多个条件进行查找操作&#xff0c;目前没有现成的内置函数。 本篇介绍 VLOOKPCHOOSE 组合…

SpringBoot读取配置的几种方式

SpringBoot读取配置的方式有多种&#xff0c;这里介绍6种 1.第一种Value 注意&#xff1a;static和final修饰的变量不生效 2.通过ConfigurationProperties&#xff08;prefix“”&#xff09; 适用于对对象多个变量统一绑定&#xff0c;比Value高效 3.通过Environment Sprin…

信创环境下,使用国产服务器如何进行文件高速可靠传输?

信创&#xff0c;即信息技术应用创新&#xff0c;2018年以来&#xff0c;受“华为、中兴事件”影响&#xff0c;国家将信创产业纳入国家战略&#xff0c;并提出了“28n”发展体系。从产业链角度&#xff0c;信创产业生态体系较为庞大&#xff0c;主要包括基础硬件、基础软件、应…

堆和栈的区别以及栈的顺序存储和链式存储—Python数据结构(三)

栈 一、栈 1. 定义 栈是限制在一端进行插入操作和删除操作的线性表(俗称堆栈)&#xff0c; 允许进行操作的一端称为”栈顶“&#xff0c;另一固定端称为”栈底“&#xff0c;当栈中没有元素时称为”空栈“。 2. 特点 栈只能在一端进行操作。 栈模型具有先进后出&#xff…

基于jeecg-boot的任务甘特图显示

更多功能看演示系统 gitee源代码地址 后端代码&#xff1a; https://gitee.com/nbacheng/nbcio-boot 前端代码&#xff1a;https://gitee.com/nbacheng/nbcio-vue.git 在线演示&#xff08;包括H5&#xff09; &#xff1a; http://122.227.135.243:9888 基于项目的任务显…

Redis项目 PART1

第一部分&#xff1a;含注册登入商户查询&#xff08;使用缓存) 一、注册登入 1.1 session共享问题 使用redis而不用传统的session的原因&#xff08;session共享问题&#xff09;&#xff1a;每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat&#x…

网络子系统学习3:网络访问层

目录 网络访问层 网络设备的表示 数据结构 注册网络设备 接收分组 传统方法 对高速接口的支持 发送分组 网络访问层 网络实现的第一层&#xff0c;即网络访问层。该层主要负责在计算机之间传输信息&#xff0c;与网卡的设备驱动程序直接协作。 本次不会讲驱动程序的设计…

全面助力AI人工智能在科研、教学与实践技能

目录 模块一 编程入门与进阶提高 模块二 科研数据可视化 模块三 信息检索与常用科研工具 模块四 科技论文写作与技巧 模块五 数据预处理与特征工程 模块六 多元线性回归 模块七 机器学习 模块八 深度学习 模块九 答疑讨论 更多推荐 在人工智能领域进行研究和深耕&…