Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >qlineedit输入提示_qlineedit设置不可编辑

qlineedit输入提示_qlineedit设置不可编辑

作者头像
全栈程序员站长
发布于 2022-11-08 07:06:42
发布于 2022-11-08 07:06:42
5.2K00
代码可运行
举报
运行总次数:0
代码可运行

一、QlineEdit 基本方法

setAlignment()

按固定值方式对齐文本

Qt.AlignLeft:水平方向靠左对齐

Qt.AlignRight:水平方向靠右对齐

Qt.AlignCenter:水平方向居中对齐

Qt.AlignJustify:水平方向调整间距两端对齐

Qt.AlignTop:垂直方向靠上对齐

Qt.AlignBottom:垂直方向靠下对齐

Qt.AlignVCenter:垂直方向居中对齐

setEchoMode()

设置文本框的显示格式,允许输入的文本显示格式的值可以是:

QLineEdit.Normal:正常显示所输入的字符,此为默认选项

QLineEdit.NoEcho:不显示任何输入的字符,常用于密码类型的输入,且长度保密

QLineEdit.Password:显示与平台相关的密码掩饰字符,而不是实际输入的字符

QLineEdit.PasswordEchoOnEdit:在编辑时显示字符,负责显示密码类型的输入

setPlaceholderText()

设置文本框显示文字

setMaxLength()

设置文本框所允许输入的最大字符数

setReadOnly()

设置文本为只读

setText()

设置文本框的内容

text()

返回文本框的内容

setDragEnable()

设置文本框是否接受拖动

selectAll()

全选

setFocus()

得到焦点

setInputMask()

设置掩码

setValidator()

设置文本框的验证器(验证规则),将限制任意可能输入的文本,可用的校验器为

QIntValidator:限制输入整数

QDoubleValidator:限制输入浮点数

QRegexpValidator:检查输入是否符合正则表达式

setFont()

e1.setFont(QFont(‘Arial’,20))

QLineEdit() 信号:

selectionChanged

只要选择改变了,这个信号就会发射

textChanged

当修改文本内容时,这个信号就会发射

editingFinished

当编辑文本结束时,这个信号就会发射

二、介绍一个QLineEdit() 小案例,主要分为以下几章: 1.QLineEdit()常用属性、信号、函数介绍及举例 2. 密码的输入表示 3. 文本输入栏的自动补全 4.密码的输入和文本输入栏的自动补全 公用类型 QLineEdit.ActionPosition 描述如何显示加入到输入框中的action部件。

QLineEdit.EchoMode 描述输入框如何显示其内容。

举个小例子吧

主要是针对ActionPosition举例,EchoMode的例子在下章。

这个例子当中,我们对拼写的单词进行了检查,发现计算机能够猜测出我们可能拼写错误的单词,并给出拼写建议。

单词拼写检查的代码来源互联网(感谢原作者):Python写一个简洁拼写检查器 – CSDN博客

复制代码 class Line(QDialog):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def Ui(self):
    self.line = QLineEdit(self)
    self.line.move(20,20)
    action = QAction(self)
    action.setIcon(QIcon('check.ico'))
    action.triggered.connect(self.Check)
    self.line.addAction(action,QLineEdit.TrailingPosition)  #对QAction对象的位置进行设定,设定在文本右边

def Check(self):
    word = self.line.text()
    QMessageBox.information(self,'提示信息框','你输入的用户名是: %s"%word)

复制代码 Qt.LeftToRight、Qt.RightToLeft是什么意思呢? 它指定了Qt布局和文本处理的方向。

对于某些语言,从右到左布局是必需的,特别是阿拉伯语和希伯来语。

LayoutDirectionAuto 有两个用途,当与小部件和布局一起使用时,它将暗示使用在父小部件或QApplication上设置的布局方向。 这与QWidget. unsetLayoutDirection()具有相同的效果。当LayoutDirectionAuto与文本布局结合使用时,它将暗示文本的方向性取决于要展开的字符串内容。

常用接口 一些常用接口的举例

QLineEdit.text():返回输入框的当前文本。 QLineEdit.addAction(Action,QLineEdit.ActionPosition):添加动作到文本输入栏,上面已经举过例子了。 QLineEdit.setAlignment(Qt.Alignment flag):属性保存了输入框的对齐方式(水平和垂直方向。这个知识点在 学点编程吧:PyQt5系列教程(21):标签(QLabel)​zhuanlan.zhihu.com

有过介绍,详情请点击。

QLineEdit.setCompleter() :输入栏的自动补全就是靠这个实现的,下下章我们讲解。 QLineEdit.deselect() :取消选中任何已选中的文本。 QLineEdit.displayText():返回显示的文本。默认值为一个空字符串。 如果echoMode是Normal,和text()返回的一样;如果EchoMode是Password或PasswordEchoOnEdit,会返回平台相关的密码掩码字符;如果EchoMode是NoEcho,返回一个空字符串””。 QLineEdit.selectedText():返回选中的的文本。如果没有选中,返回一个空字符串。默认为一个空字符串。 QLineEdit.setCursorPosition(QLineEdit.cursorPosition):设置输入框当前光标的位置。 QLineEdit.setMaxLength(int):此属性包含文本的最大允许长度。如果文本太长,将从限制的位置截断。默认值为32767。 QLineEdit.setReadOnly(bool):此属性保存输入框是否为只读。在只读模式下,用户仍然可以将文本复制到剪贴板,但不能编辑它,且不显示光标。 QLineEdit.setSelection(int start, int length) :从位置start选择文本为length个字符,允许负长度。我们一启动程序是否设置setSelection的,效果如下:

QLineEdit.setValidator():设置输入框的验证器,将限制任意可能输入的文本。 我们在学点编程吧:PyQt5系列教程(12):构建我们自己的密码输入框​zhuanlan.zhihu.com有过介绍,详情请点击。 QLineEdit.setPlaceholderText(str):该属性包含行编辑的占位符文本。只要行编辑为空,设置此属性将使行编辑显示一个灰色的占位符文本。

通常情况下,即使具有焦点,空行编辑也会显示占位符文本。但是,如果内容是水平居中的,则行编辑具有焦点时,占位符文本不会显示在光标下方。默认情况下,该属性包含一个空字符串。

QLineEdit.isClearButtonEnabled(bool) :是否设置清除内容的按钮。

QLineEdit.setInputMask():设置掩码,效果就是我们演示视频中的License输入。 下表列出了可在一个输入掩码中使用的字符。 空格字符是空格的默认字符,对于允许但不需要字符的情况需要。

掩码由掩码字符和分隔符字符串组成,后面可以跟一个分号和用于空白的字符,空白字符在编辑后总是从文本中删除。

例如:

效果就是下面这个样子的:

信号 selectionChanged() :只要选择改变这个信号就会被发射。 cursorPositionChanged(int old, int new) :只要光标移动,这个信号就会发射。前面的位置old,新的位置是new。 editingFinished():按下返回或回车键或线条编辑失去焦点时发出此信号。 returnPressed():按下返回或回车键时发出此信号。 textChanged(str):只要文字发生变化就会发出此信号。文本参数是新文本。与textEdited()不同,当通过调用setText()以编程方式更改文本时,也会发出此信号。 textEdited(str) :无论何时编辑文本都会发出此信号。文本参数是新文本。与textChanged()不同,当以编程方式更改文本时,不会发出此信号,例如通过调用setText()。 我们以editingFinished()为例,视频演示中主要也用到了这个信号发射,如果完成相应的内容在最后的一栏进行检测。

复制代码 self.line = QLineEdit(self) lb = QLabel(‘IP地址’,self) self.line.editingFinished.connect(self.Action) self.line.setInputMask(‘000.000.000.000;_’)

def Action(self): if len(self.line.text()) > 3: QMessageBox.information(self,‘提示信息’, ‘这行你完成了哦’) 复制代码 函数 clear() :清除输入框内容 copy():如果echoMode()是Normal,将选中的文本复制到剪贴板。 cut() :如果echoMode()是Normal,将所选文本复制到剪贴板并删除它。 如果当前的验证不允许删除选定的文本,cut()将复制而不删除。 paste() :如果输入框不是只读的,插入剪贴板中的文本到光标所在位置,删除任何选定的文本。如果最终的结果不被当前的验证器接受,将没有任何反应。 redo() :重做上次操作,如果redo可用(isRedoAvailable() )。 selectAll() :选中所有文本(即:高亮),并将光标移动到末尾。当一个默认值被插入时,这非常有用,因为如果用户在点击部件之前就输入,选中的文本将被删除。 setText(str) :设置输入框显示的文本。 undo() :撤消上次操作(如果撤销可用) 其它 我们在视频演示中,如何判断输入的字符是否符合相应的要求呢?使用正则表达式,即使用re模块。这里我们举一个例子:

regex_phone = ‘^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$’ phone = self.lineEdit_4.text() rr1 = re.compile(regex_phone) if rr1.match(phone) is None: self.lineEdit_6.setText(‘请填写正确的手机号!’) 我们首先写一个手机号码的正则表达式(这个网上很多),然后使用re.compile()编译一下,这样效率会高一些,再使用match()进行匹配,如果匹配上就返回匹配上的字符串,否就不返回。详见:

https://mp.weixin.qq.com/s?__biz=MzIxNDMzMDQ2OQ==&mid=2247484590&idx=1&sn=4bbd8179f088c22f787ac70c826b4df4&chksm=97a879a4a0dff0b2b0974f410dc08c2ad46887997d58038503d0e7a91ee3cb2b360924d9d0f6#rd

下面将介绍密码的输入方法,密码的3种输入方式,效果图如下:

https://zhuanlan.zhihu.com/p/30152208

从实际使用的注册页面上看,一般用的比较多的是这样的(网易邮箱注册为例):

https://zhuanlan.zhihu.com/p/34008281 专栏中的视频中我们基本上实现了这个功能,在输入问题提示上没有网易邮箱那么全面,只是给出来了通用的提示信息。

当然我们在输入上感知更好一些,下面讲解一下密码输入 先明后密,屏蔽鼠标和关键键盘组合操作 的案例,至于判断两次密码是否一致,密码强度问题,只要设置好相应的正则表达式进行匹配就行了。

其实还有一个密码输入软键盘的问题,我已经设计好了,但是不属于这个知识点,不做讲解,等后期碰到相关的知识点再做讲解。

设计思路 当我们输入密码的时候,它显示的是明文,但是由于里面有一个时间机制在里面,一定时间内它会自动将文本输入框里面的内容覆盖为“*”,所以我们填写密码的时候就好像先是有明文紧接着变成密文样的。

核心代码 这里我们继承了QLineEdit这个类并自定义一个新类PwdLineEdit。我们定义了两个成员变量:

self.m_LineEditText = “” self.m_LastCharCount = 0 分别用以记录真实的密码和密码出现变化前的长度。

1、在程序中我们用到了两个信号发射: self.cursorPositionChanged[int,int].connect(self.DisplayPasswordAfterEditSlot) self.textEdited[str].connect(self.GetRealTextSlot) 第一个信号是在光标发生移动时产生,返回两个整型变量并调用槽函数 DisplayPasswordAfterEditSlot(),用以显示密文; 第二个信号是在文本编辑时产生,调用槽函数 GetRealTextSlot(),用以记录真实的密码。

2、如何在让输入的明文自动的变成密文呢?我使用了QTimer类,设置超时时间是为200毫秒,然后自动调用DisplayPasswordSlot()。 复制代码 self.time = QTimer(self) self.time.setInterval(200) self.time.start() def DisplayPasswordAfterEditSlot(self, old, new): if old >= 0 and new >= 0: if new > old: self.time.timeout.connect(self.DisplayPasswordSlot) else: self.setCursorPosition(old) 复制代码 这里的old和new分别表示光标移动前后的位置,要是new > old,明显就是在输入密码,增加密码长度;反之就是在删除密码字符。就是这个样子:

3、显示密文我们是怎么做到的呢? mask = “” count = len(self.text()) if count > 0: for i in range(count): mask += “ 我们判断输入的长度,然后用几个””覆盖掉,最后通过setText(),覆盖掉文本输入框。因为有时间延时,所以就好像每写一个就隐藏一个样的。很神奇是吧!

4、还有最关键的步骤,记录真正的密码,也就是我们输入的内容。 def GetRealTextSlot(self, text): self.m_LastCharCount = len(self.m_LineEditText) if len(text) > self.m_LastCharCount: self.m_LineEditText += text[-1] elif len(text) <= self.m_LastCharCount: self.m_LineEditText = self.m_LineEditText[:-1] 当密码在输入的时候会自动的调用GetRealTextSlot()这个函数。

self.m_LastCharCount记录了当前没有变化时密码的长度。如果当前的长度大于之前记录的密码长度,很明显,密码在新增字符,所有实际密码是self.m_LineEditText += text[-1],即将新增的字符和原有的密码进行合并。

反之,就删除最后一个字符,所以就用到了self.m_LineEditText = self.m_LineEditText[:-1]。这句话要是大家不理解,我举个简单的例子就明白了。还是看下动画吧。注意看str的变化!

动画中字符串str是不断地减少的,其本质是每次取字符串第0位到最后一位(不含)的字符串。

关于如何屏蔽鼠标右键或者键盘的一些操作,可以参见 学点编程吧:PyQt5系列教程(12):构建我们自己的密码输入框​zhuanlan.zhihu.com

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/185446.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月6日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
qlineedit_qt layoutstretch
QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。
全栈程序员站长
2022/11/08
2.4K0
qlineedit_qt layoutstretch
pyqt5 lineedit_pyqt5 tablewidget
定义输入掩码的字符 下表列出了输入掩码的占位符和字面字符,并说明其如何控制数据输入
全栈程序员站长
2022/11/08
1.4K0
pyqt5 lineedit_pyqt5 tablewidget
【QT】:控件 -- 输入类
(2)编写 widget.cpp,在构造函数中编写初始化代码,并且给按钮添加 slot 函数
IsLand1314
2025/02/02
4780
【QT】:控件 -- 输入类
QLineEdit 输入验证(相关的设置)
LineEdit提 供一个文字输入栏位,可以输入文字或数字,我们可以对输入作验证,或是设定为一般显示、密码显示等等,以下的程式是个简单的设定示范:
bear_fish
2018/09/20
3.2K0
qt plaintextedit使用_qt获取lineedit的内容
QLineEdit和QTextEdit都是文本框类,QLineEdit类是单行文本框控件,可以输入单行字符串。QTextEdit类是多行文本框控件,可以显示多行文本内容,当文本内容超出控件显示范围时,可以显示水平个垂直滚动条。QTextEdit不仅可以显示文本还可以显示HTML文档。
全栈程序员站长
2022/11/08
2.5K0
qt plaintextedit使用_qt获取lineedit的内容
Qt官方示例-QLineEdit编辑器
  这只允许用户在遵循简单规则的行编辑中键入字符,使用不同的掩码在编辑前将会预先固定显示相应的字符掩码。
Qt君
2020/02/10
1.6K0
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
导读       行文本输入框在用于界面的文本输入,在WEB登录表单中应用广泛。一般行文本编辑框可定制性较高,既可以当作密码输入框,又可以作为文本过滤器。QLineEdit本身使用方法也很简单,无需过多的设置就能进行使用。于是这篇博文主要讲解如何对行文本编辑框QLineEdit进行定制。 基本定制       为了简化工作,还是如同前面所说的,直接用Qt Designer拖一个QLineEdit进行编辑。代码部分不太多: ui.lineEdit->setPlaceholderText(QStringLite
24K纯开源
2018/01/18
3K0
Qt Style Sheet实践(四):行文本编辑框QLineEdit及自动补全
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
文章目录 1. 状态栏 2. 窗口居中显示 3. 关闭窗口 4. QWidget 5. 添加图标 6. 气泡提示信息 7. QLabel 添加快捷键 8. QLineEdit echoMode 验证器 inputMask 综合练习 9. QTextEdit learn from 《PyQt5 快速开发与实战》 1. 状态栏 self.statusbar.showMessage("hello, Michael", 2000),第二个参数是显示多长时间ms,默认无限长时间 # -*- coding: utf-8
Michael阿明
2022/05/10
2.8K0
PyQt5 基本窗口控件(状态栏/窗口/图标/提示消息/QLabel/文本类控件)
C++ Qt开发:LineEdit单行输入组件
Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍LineEdit单行输入框组件的常用方法及灵活运用。
王 瑞
2023/12/13
1.7K0
C++ Qt开发:LineEdit单行输入组件
【QT】显示类控件
虽然 QPushButton 也可以通过设置图标的⽅式设置图⽚,但是并⾮是⼀个好的选择。更多的时候还是希望通过 QLabel 来作为⼀个更单纯的显⽰图⽚的⽅式。
YoungMLet
2024/07/16
4130
【QT】显示类控件
qt lineedit_个人总结学生
以上是Qt官方文档对QLineEdit的简要说明,下面根据个人经验,对一些常用的方法作说明:
全栈程序员站长
2022/11/08
1K0
qt lineedit_个人总结学生
限制QLineEdit的数值输入范围
QLineEdit *lineEdit = new QLineEdit(this);
bear_fish
2018/09/20
12.1K0
【QT】常用控件(三)
我们来写一个倒计时小程序,其中,QTimer就是一个定时器,通过start启动定时器,通过stop关闭定时器,开启定时器后,每隔一定的周期(自己设置的)触发一次timeout信号,通过connect把该信号与我们自定义的槽函数updateTime相关联后,让槽函数改变LCDNumber的显示值,倒计时就写好了
s-little-monster
2024/10/22
3180
【QT】常用控件(三)
Qt Designer基本控件介绍——Input Widgets(输入小部件)
Combo Box :组合框。是一个集按钮和下拉选项于一体的控件,也称做下拉列表框 常用方法: count() :返回下拉选项集合中的数目 currentText() :返回选中选项的文本 itemText(i) :获取索引为 i 的 item 的选项文本 currentIndex():返回选中项的索引 setItemText(int index,text) :改变序列号为 index 的文本 ---- 信号: Activated :当用户选中一个下拉选项时发射该信号 currentIndexChanged
Elsa_阿尼
2021/07/12
6.8K0
Qt Designer基本控件介绍——Input Widgets(输入小部件)
qlineedit 不可编辑_qt中获取lineedit文本内容
2.setPlaceholderText()设置提示文字 如图,搜索输入框,没有输入任何字符时,显示“搜索”,对用户输入作相关提示。
全栈程序员站长
2022/11/08
1.8K0
qlineedit 不可编辑_qt中获取lineedit文本内容
PyQt5常见布局、控件用法有哪些?
闻说社
2024/07/12
3310
PyQt5常见布局、控件用法有哪些?
Qt中使用标准输入框
这一节主要讲一下标准输入框的使用,Qt提供了一个QInputDialog类,这个类提供了几个预先设定好的常用输入对话框。 比如:
mythsman
2022/11/14
1.5K0
Qt中使用标准输入框
PyQt5 输入对话框QInputDialog
(int, bool ok) QInputDialog.getInt (QWidget parent, QString title, QString label, int value = 0, int min = -2147483647, int max = 2147483647, int step = 1, Qt.WindowFlags flags = 0)
用户6021899
2019/08/14
2.9K0
qlineedit自动补全_qlineedit只能输入数字
大家好,又见面了,我是你们的朋友全栈君。 转载:http://www.cnblogs.com/csuftzzk/p/qss_lineedit_completer.html?utm_source=tui
全栈程序员站长
2022/11/11
9420
Qt | TCP客户端简单实现+TCP助手测试
Qt历险记
2024/12/02
5760
Qt | TCP客户端简单实现+TCP助手测试
相关推荐
qlineedit_qt layoutstretch
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档