QLineEdit 类(行编辑器)

1、 QLineEdit 类是 QWidget 类的直接子类,该类实现了一个单行的输入部件,即行编辑器;

                             
2、验证器(QValidator 类)和输入掩码简介:主要作用是验证用户输入的字符是否符合验证器
的要求,即限制对用户的输入,比如仅能输入数字而不能输入字母等。
3、行编辑器默认支持复制、剪切、粘贴等常用操作,还支持一些常用的快捷键(比如 Ctrl+C
等)和鼠标右键的上下文菜单。 下表为默认支持的键盘快捷键

默认支持的快捷键
按键说明按键说明
左箭头使光标向左移动一个字符Ctrl+A全选
Shift+左箭头向左移动并选择一个字符Ctrl+C复制
右箭头使光标向右移动一个字符Ctrl+Insert复制
Shift+右箭头向右移动并选择一个字符Ctrl+K删除到行尾
Home将光标移至行的开头Ctrl+V粘贴
End将光标移至行尾Shift+Insert粘贴
Backspace删除光标左侧的字符Ctrl+X剪切
Ctrl+Backspace删除光标左侧的一个单词Shift+Delete剪切(即删除并复制)
Delete删除光标右侧的字符Ctrl+Z撤消最后的操作
Ctrl+Delete删除光标右侧的一个单词Ctrl+Y重做最后的操作

4、 QLineEdit 类中的属性

QLineEdit 类(行编辑器)属性速查表
属性名说明属性名说明
inputMask设置输入掩码acceptableInput是否符合掩码和验证的要求
alignment对齐方式maxLength文本最大长度
clearButtonEnabled是否显示清除按钮modified内容是否被修改
cursorMoveStyle文字光标移动的方式placeholderText是否显示占位符文本(提示信息)。例如当用户未选中输入框时,输入框中显示“请输入…”,而用户选中输入框时,“请输入…” 随之消失。
cursorPosition文字光标的位置readOnly是否启用只读模式
displayText获取回显的文本redoAvailable描述重做是否已启用
dragEnabled是否启用拖放text获取和设置文本
echoMode回显模式。    设定输入框中文本的显示样式,该属性的可选值有以下几个:
QLineEdit::Normal:正常显示所输入的字符,此为默认选项。
QLineEdit::NoEcho:不显示任何输入的字符,常用于密码类型的输入,且长度保密。
QLineEdit::Password:显示与平台相关的密码掩饰字符,而不是实际输入的字符。当用户重新点击输入框时,可以紧接着之前的文本继续输入。
QLineEdit::PasswordEchoOnEdit:编辑时正常显示输入的字符,编辑完成后改为用密码掩饰字符显示。当用户重新点击输入框时,不能紧接着之前的文本继续输入。
 
undoAvailable描述撤消是否已启用。
frame是否绘制边框selectedText获取选中的文本,设置需使用函
数 setSelection()
hasSelectedText是否有文本被选中

①、 acceptableInput: const bool 访问函数: bool hasAcceptableInput() const;
此属性描述,输入是否符合 inputMask 属性和 QValidator 类的要求。默认为 true。

②、 alignment: Qt::Alignment
访问函数:

Qt::Alignment alignment() const;

void setAlignment(Qt::Alignment);
此属性描述行编辑器文本的对齐方式,默认为 Qt::AlignLeft(左对齐)和 AlignVenter(垂
直居中), Qt::Alignment 枚举详见“部件的公共枚举”章节。

③、 clearButtonEnabled: bool //Qt5.2
访问函数:

bool isClearButtonEnabled() const;

void setClearButtonEnabled(bool);
此属性描述,行编辑器是否在不为空时显示“清除”按钮(见上图)。

        

④、 frame: bool 访问函数:

bool hasFrame() const;

void setFrame(bool);
此属性描述是否绘制 QLineEdit 的默认边框(见下图),默认为 true。

⑤、 placeholderText: QString访问函数:

QString placeholderText() const;

void setPlaceholderText(const QString&);
此属性描述是否启用行编辑器的占位符文本(提示语)。若行编辑器是空的,则当设置此属性后,
即使行编辑器具有焦点,也会使行编辑器显示一个灰色的占位符文本(见下图),若在
行编辑器中输入文本,则会清除占位符文本。默认为空字符串


⑥、 maxLength: int 访问函数:

int maxLength() const;

void setMaxLength(int);
此属性描述文本的最大允许长度,若文本太长,会被截断。当发生截断时,任何选定
的文本会被取消,文字光标位置设置为 0,且显示字符串的第一部分。默认为 32767。

⑦、 hasSelectedText: const bool 访问函数:

bool hasSelectedText() const;
此属性描述是否有文本被选中,若用户选中部分或全部文本,则为 true,否则为 false,
默认为 false。

⑧、 selectedText: const QString 访问函数:

QString selectedText() const;
获取选定的文本(要设置选中的文本需使用函数 setSelection()),若没有文本被选中,
则此属性为空字符串,默认为空字符串。

⑨、 text: QString 访问函数:

QString text() const;

void setText(const QString&);
信号: void textChanged(const QString &);
获取和设置行编辑器的文本。 若设置此属性,则会清除所选的内容、撤消/重做历史
记录,并将文字光标移至行尾,并把 modified 属性设为 false。使用 setText()插入文本
内容时,不会被验证。若文本过长,则截断为 maxLength()的长度。默认值为空字符
串。

⑩、 cursorPosition: int 访问函数:

int cursorPosition() const;

void setCursorPosition(int);
此属性描述当前文字光标的位置,默认为 0。

⑪、 cursorMoveStyle: Qt::CursorMoveStyle访问函数:

Qt::CursorMoveStyle cursorMoveStyle() const;
void setCursorMoveStyle(Qt::CursorMoveStyle);
 此属性描述文字光标(插入符)的移动样式, Qt::CursorMoveStyle 枚举可取两个值,
其意义如下
 Qt::LogicalMoveStyle:在从左向右显示的文本中,当按下左箭头键时光标
向左移动,但在从右向右显示的文本中,按下左箭头键时光标向右移动。
按下右箭头键的行为类似。
 Qt::VisualMoveStyle:无论是从左向右还是从右向左显示的文本,按下左箭
头键时方向都向左移动,按下右箭头键时都向右移动。

⑫、 dragEnabled: bool 访问函数:

bool dragEnabled() const;

void setDragEnabled(bool);
此属性描述是否启用拖动功能(即在选定的文本上按下鼠标并移动时可以移动或复制
选定的文本),默认是禁用的。

⑬、 readOnly: bool 访问函数:

bool isReadOnly() const;

void setReadOnly(bool);
此属性描述行编辑器是否是只读模式,在只读模式下,仍然可以复制文本,但不能编
辑文本
,而且不会显示文字光标。默认为 false。

⑭、 undoAvailable: const bool 访问函数:

bool isUndoAvailable() const;
此属性描述撤消(undo)是否可用,只要用户修改了行编辑器中的文本,则撤消就变成
可用的了。

⑮、 redoAvailable: const bool 访问函数:

bool isRedoAvailable() const;
此属性保存重做(redo)是否可用,当在行编辑器中执行了一次或多次撤消(undo)操作,
则重做就会变得可用,默认为 false。

⑯、 echoMode: EchoMode 访问函数:

EchoMode echoMode() const;

void setEchoMode(EchoMode);
此属性描述行编辑器的回显模式,回显模式是指行编辑器如何将用户输入的文本显示
(或回显)给用户, QLineEdit::EchoMode 枚举对回显模式进行了描述,见下表

QLineEdit::EchoMode 枚举(无标志)
成员说明
QLineEdit::Normal0逐字显示输入的字符(默认值)
QLineEdit::NoEcho1不显示任何内容(可用于密码长度也需保密的密码)
QLineEdit::Password2显示与平台相关的密码掩码字符(比如将输入的内容显示为"*")。
QLineEdit::
PasswordEchoOnEdit
3在编辑时,显示输入的字符,否则以 Password 的形式显示字符。
switch (index) {case 0://默认,输入什么即显示什么echoLineEdit->setEchoMode(QLineEdit::Normal);break;case 1://密码,一般是用小黑点覆盖你所输入的字符echoLineEdit->setEchoMode(QLineEdit::Password);break;case 2://编辑时输入字符显示输入内容,否则用小黑点代替echoLineEdit->setEchoMode(QLineEdit::PasswordEchoOnEdit);break;case 3://任何输入都看不见(只是看不见,不是不能输入)echoLineEdit->setEchoMode(QLineEdit::NoEcho);
}

⑰、 displayText: const QString 访问函数:

QString displayText() const;
 此属性用于获取回显(显示)的文本
 若 echoMode 属性为 Normal 返回的内容与 text()函数相同
 若 echoMode 属性为 Password PasswordEchoOnEdit,则返回一串与平台相关
长度为 text().length()的密码掩码字符,比如返回"****"。
 若 echoMode 属性是 NoEcho,则返回一个空字符串。默认为空字符串。

⑱、 inputMask: QString 访问函数:

QString inputMask() const;

void setInputMask(const QString &);
 此属性描述输入掩码,
 此处掩码的作用是限制用户输入的文本(比如只能输入数字而不能输入字母等)。
 若未设置掩码,则返回空字符串, QValidator 类可以代替掩码的功能。
 设置空字符串可以取消掩码的设置。空格字符是空白的默认字符。
 设置掩码的方法如下:
 行编辑器的掩码需要对每一位输入的字符使用掩码字符(见下表)进行逐位
设置。 比如 setInputMask("AAAAA");表示只能在行编辑器中的前 5 位输入
ASCII 字母,不能输入数字或其他字符。 再如常见的 MAC 地址的输入就可
以使用 setInputMask("HH:HH:HH:HH:HH:HH");的掩码设置。
 在掩码字符的分号之后的字符表示在行编辑器中输入空白时替换的字符。
比如 setInputMask("AAAAA;_");表示输入的空白使用"_"替换。
 注: 空格需要选中要输入的那一位,然后才能输入空格。
 下表为设置掩码时使用的掩码字符及其限制

⑲、 modified: bool 访问函数:

bool isModified() const;

void setModified(bool);
此属性描述,行编辑器的内容是否被用户修改了。调用 setText()函数会将该属性重置
为 false。默认为 false。

6、 QLineEdit 类中的函数
1)、 构造函数
QLineEdit(QWidget* parent = Q_NULLPTR);
QLineEdit(const QString &contents , QWidget* parent = Q_NULLPTR);

2)、 用于编辑的函数
①、 void copy() const; //槽,复制
②、 void cut(); //槽,剪切,若当前验证器不允许删除,则 cut()将复制而不删除
③、 void paste(); //槽,粘贴,若粘贴的文本不被验证器接受,则什么也不做。
④、 void insert(const QString &newText); //插入
⑤、 void backspace(); //删除左侧或所选择的文本。
⑥、 void del(); //删除右侧或所选择的文本。

⑦、 void clear(); //清除行编辑器的内容
⑧、 void reod() ; //槽,若重做可用,则重做最后的操作
⑨、 void undo(); //槽,若撤消可用,则取消最后一次的操作。

3)、 与选择有关的函数
①、 void setSelection(int start, int length); 从位置 start 开始选择长度为 length 的文本,长度允许是负的
②、 void deselect(); 取消选定的文本
③、 void selectAll(); //槽,选择所有文本。
④、 int selectionLength() const; //返回选择的文本长度, qt5.10
⑤、 int selectionStart() const;
  int selectionEnd() const; //qt5.10

4)、 与文字光标有关的函数
①、 void cursorPositionAt (const QPoint &pos); //返回位于 pos 处的文字光标的位置

②、 void end(bool mark);
void home(bool mark);
将文字光标移到开头/行尾。若 mark 为 true,则从当前位置选择直到第一/最后一个位
置的文本,否则取消已选定的文本。

③、 void cursorBackward (bool mark, int steps = 1);
void cursorForward(bool mark, int steps = 1);
将文字光标向右(Forwar)/向左(Backward)移动 steps 个字符,若 mark 为真,则选择每
个移过的字符,否则清除已选定的文本。

④、 void cursorWordBackward(bool mark);
void cursorWordForward(bool mark);
向右(Forwar)/向左(Backward)将文字光标移动一个单词,若 mark 为 true,则选中该单
词,否则取消被选中的内容。

5)、 以下函数用于设置和获取页边距
void setTextMargins(int left, int top, int right, int bottom);
void setTextMargins(const QMargins &margins);
void getTextMargins(int *left, int *top, int *right, int *bottom) const;
QMargins textMargins() const;

6)、 以下函数用于设置和获取验证器及自动完成器。

6.1 验证器

void setValidator( const QValidator* v);
const QValidator* validator() const;

限制输入框中的文本内容,比如:输入框只包含整数。

只允许输入数字:

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[0-9]+$")));   

只允许输入浮点型数据:

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("^(-?\d+)(\.\d+)?$")));   

只能输入字母:

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("^[A-Za-z]+$")));   

只能输入数字和字母:

ui->lineEdit->setValidator(new QRegExpValidator(QRegExp("[a-zA-Z0-9]+$")));   

只能输入-9999~9999的整型数据:

ui->lineEdit->setValidator(new QRegExpValidato(new QRegExpValidator(QRegExp("^-?(9999|[0-9]?[0-9]?[0-9]?\\d(\\.\\d{1,4})?)$"))); 

只能输入-180~180的浮点型数据:

ui->lineEdit>setValidator(new QRegExpValidator(QRegExp("^-?(180|1?[0-7]?\\d(\\.\\d{1,4})?)$")));   //只能输入数字

其他更多可查看:
QT QLineEdit 只能输入字母或数字,输入格式约束(正则表达式)

6.2 自动完成器

void setCompleter(QCompleter* c)
QCompleter* completer() const;

7)、 与上下文菜单有关的函数(即点击鼠标右键时弹出的菜单)
①、 QMenu* createStandardContextMenu();
该函数创建了一个标准的上下文菜单,这个函数默认是由 contextMenuEvent()事件处
理函数调用的。

②、 virtual void contextMenuEvent(QContextMenuEvent* event) //受保护的
 该函数是 QWidget::contextMenuEvent()函数的重新实现。
 该函数的作用是显示由 createStandardContextMenu()函数创建的标准上下文菜单,
 若要禁用行编辑器的上下文菜单,可以设置 QWidget::contextMenuPolicy 属性的
值为 Qt::NoContextMenu。
 若要使用自定义的上下文菜单,则可以重新实现此函数。
 若要扩展标准的上下文菜单, 则重新实现该函数,并向 createStandardContextMenu()
函数返回的菜单中添加内容,然后返回修改后的菜单。 代码大致如下
void contextMenuEvent(QContextMenuEvent* event){
QMenu *menu = createStandardContextMenu();
menu->addAction("XXX");
……
menu->exec(event->globalPos());
delete menu; }

7、 QLineEdit 类中的信号
①、 void cursorPositionChanged(int old, int new); //信号
当文字光标移动时就会发送此信号, old 是移动前的位置, new 是移动后的位置。

②、 void editingFinished(); //信号
当按下 enter 键或行编辑器失去焦点时,发送此信号。若在行编辑器中设置了验证器
或掩码,则只有当输入的内容符合掩码的要求或验证器返回 QValidator::Acceptable
时,才会发送该信号。 比如 setInputMask("AAAA"); 则只有在输入 4 位正确的字符之
后才会发送此信号,若只正确输入了 3 位或 2 位则不会发送此信号。

③、 void returnPressed() //信号
当按下 enter 键时(注意:失去焦点时不会发送),发送此信号。若在行编辑器中设置
了 验 证 器 或 掩 码 , 则 只 有 当 输 入 的 内 容 符 合 掩 码 的 要 求 或 验 证 器 返 回
QValidator::Acceptable 时,才会发送该信号(具体见 editingFinished 信号)。

④、 void selectionChanged(); //信号
只要选择发生了改变,就会发送此信号。 注意:仅仅移动文字光标,而未使选择的内
容发生改变,则不会发送此信号。

⑤、 void textChanged(const QString &text); //信号
文本改变时发送此信号, text 参数保存的是新的文本。注意,当以编程的方式更改文本时
(比如调用 setText()),也发送此信号。

⑥、 void textEdited(const QString &text); //信号
文本被编辑发送此信号, text 参数保存的是新的文本。注意,当编程的方式更改文本时(比如调用 setText()),不会发送此信号。
以上函数及信号都比较简单,示例略。

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

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

相关文章

发UPS国际快递到墨西哥的收费标准

UPS国际快递是目前全球范围内最为知名和可靠的快递服务提供商之一,无论是个人还是企业都可以通过UPS将包裹快速送达世界各地,其中包括墨西哥。所以,对于许多人来说,了解到发UPS国际快递到墨西哥的收费标准是十分重要的。 发UPS国际…

Linux常见进程类别

目录 常见进程类别 守护进程&精灵进程 任务管理 进程组 作业 作业 | 进程组 会话 w命令 守护进程 守护进程的创建 setsid()函数 daemon()函数 模拟实现daemon函数 前台进程 | 后台进程 僵尸进程 | 孤儿进程 僵尸进程的一些细节 守护进程 | 后台进程 守护…

C++-map和set

本期我们来学习map和set 目录 关联式容器 键值对 pair 树形结构的关联式容器 set multiset map multimap 关联式容器 我们已经接触过 STL 中的部分容器,比如: vector 、 list 、 deque 、forward_list(C11)等,这些容器统称为序列式…

关于软件的功能复用

有一些人总在说软件要复用,开发一个项目时要想想怎么在另一个项目中能重用。你问他怎么做到复用,就会听到微服务、中台一些名词 复用的层次 说到复用,首先要想明白复用的是啥 级别越低,粒度越小,复用的范围越广&#…

Yolov5改进算法之添加Res2Net模块

目录 1. Res2Net介绍 1.1 Res2Net的背景和动机 1.2 Res2Net的基本概念 2. YOLOV5添加Res2Net模块 Res2Net(Residual Resolution Network)是一种用于图像处理和计算机视觉任务的深度卷积神经网络架构。它旨在解决传统的ResNet(Residual Ne…

【java】【SSM框架系列】【三】Maven进阶

目录 一、分模块开发与设计 1.1 分模块开发的意义 1.2 分模块开发(模块拆分) 二、依赖管理 2.1 依赖传递 2.2 可选依赖 2.3 排除依赖 三、聚合与继承 3.1 聚合 3.2 继承 3.3 聚合与继承的区别 四、属性管理 4.1 属性 4.1.1 属性配置与使用 …

2023 年高教社杯全国大学生数学建模竞赛题目 B 题 多波束测线问题

B 题 多波束测线问题 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀速直线传播,在不同界面上产生反射,利用这一原理,从测量船换能器垂直向海底发射声波信号,并记录从声波发射到信号接收的传播…

智慧工地:让工地可视化、数字化、智能化

智慧工地平台功能包括:劳务管理、施工安全管理、视频监控管理、机械安全管理、危大工程监管、现场物料监管、绿色文明施工、安全隐患排查、施工综合管理、施工质量管理、设备管理、系统管理等模块。 一、项目开发环境 技术架构:微服务 开发语言&#…

数据结构--- 树

(一)知识补充 定义 树是一种数据结构,它是由n(n≥0)个有限节点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。​ 它具有以下的特点: 每个节点有零个或多个子节点; 没有父节点的节点称为根节点;每一个非根…

算法训练营day44|动态规划 part06:完全背包 (完全背包、 LeetCode518. 零钱兑换 II、377. 组合总和 Ⅳ )

文章目录 完全背包518. 零钱兑换 II (求组合方法数)思路分析代码实现思考总结 377. 组合总和 Ⅳ (求排列方法数)思路分析代码实现思考总结 完全背包 完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。 依然举这个例子: 背包最大重量为4。 物…

【LInux编译器gcc/g++】gcc使用方法和动静态库相关概念

目录 一.前言 二.源代码的翻译环境 三.gcc相关指令 四.动静态库 1.什么是库? 2.库的命名 3.库的链接方式 4.动静态链接的优缺点 5.小结 一.前言 在Windows系统上我们常用VisualStudio来进行C/C开发,VS并不是一款单一的软件,而是集成…

【刷题篇】贪心算法(一)

文章目录 分割平衡字符串买卖股票的最佳时机Ⅱ跳跃游戏钱币找零 分割平衡字符串 class Solution { public:int balancedStringSplit(string s) {int lens.size();int cnt0;int balance0;for(int i0;i<len;i){if(s[i]R){balance--;}else{balance;}if(balance0){cnt;}}return …

WPF CommunityToolkit.Mvvm Messenger通讯

文章目录 环境WeakReferenceMessenger方法介绍无回调订阅发送Token区分有回调订阅发送 环境 CommunityToolkit.Mvvm Messenger 十月的寒流: 如何使用 CommunityToolkit.Mvvm 中的 Messenger 来进行 ViewModel 之间的通信 WeakReferenceMessenger 我这里只讲简单的弱Messenger…

Spring云服务:如何将应用程序轻松迁移到云端

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

Android图形-Hardware Composer HAL

目录 一、引言 二、概览 三、实现HWC 3.1 为什么是HWC&#xff1f; 3.2 HWC的支持需求 3.3 HWC的实现思路 3.4 HWC的基元 3.5 HIDL接口 3.6 函数指针 3.7 图层和屏幕句柄 3.8 屏幕合成操作 3.9 多个屏幕 3.10 虚拟屏幕合成 3.10.1 模式 3.10.2 输出格式 3.11 同…

Qt 5.15编译(MinGW)及集成Crypto++ 8.8.0笔记

一、背景 为使用AES加密库&#xff08;AES/CBC加解密&#xff09;&#xff0c;选用Crypto 库&#xff08;官网&#xff09;。   最新Crypto C库依次为&#xff1a;8.8.0版本&#xff08;2023-6-25&#xff09;、8.7.0&#xff08;2022-8-7&#xff09;和8.6.0&#xff08;202…

如何利用 Selenium 对已打开的浏览器进行爬虫

大家好&#xff01; 在对某些网站进行爬虫时&#xff0c;如果该网站做了限制&#xff0c;必须完成登录才能展示数据&#xff0c;而且只能通过短信验证码才能登录 这时候&#xff0c;我们可以通过一个已经开启的浏览器完成登录&#xff0c;然后利用程序继续操作这个浏览器&…

【LeetCode-中等题】39. 组合总和

文章目录 题目方法一&#xff1a;递归回溯 题目 这题的nums数组里面不存在重复元素&#xff0c;所以也就无需做去重操作 但同一个元素可以被无限次取&#xff0c;说明每次递归中的for循环的开始位置就是自己 nums数组里面存在重复元素&#xff0c;去重版本&#xff1a; 方法一…

Git学习记录

Contest 一、工作区域二、操作命令2.1 创建仓库2.2 查看仓库状态2.3 从工作区向暂存区添加文件2.3.1 只添加一个文件2.3.2 添加全部文件 2.4 从暂存区向仓库区添加文件2.5 查询日志2.5.1 从当前版本开始查询2.5.2 查看所有日志 2.6 回滚2.6.1 从仓库回滚到工作区2.6.2 取消工作…

剑指 Offer 04. 二维数组中的查找

题目描述 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff0c;判断数组中是否含有该整数。 解题思路 注意每…