一、概述

QLineEdit部件是一个单行文本编辑器,支持撤消和重做、剪切和粘贴以及拖放。

默认情况下,QLineEdits有一个由平台样式指南指定的框架,可以通过调用setFrame(false)将其关闭。QLineEdit提供了用于编辑的默认键,相关键及用途官网资料有介绍,另外还提供了一个上下文菜单(通常通过鼠标右键单击调用),其中显示了一些编辑选项。

二、属性

Designer中QLineEdit的可设置属性如下:



这些属性作用及访问方法如下:

  • inputMask:inputMask用于设置行编辑器的输入掩码,缺省值为空字符串,行输入掩码可以通过inputMask()和setInputMask()方法来访问,当设置inputMask为空表示没有输入掩码,相关掩码字符对应含义请参考官方文档
  • text:text即为行编辑器当前的文本,缺省值为空字符串,可通过text()和setText()方法来访问
  • maxLength:maxLength为行编辑器允许输入的最大长度,缺省值为32767,可通过方法maxLength()和setMaxLength()访问
  • frame:frame控制行编辑器是否显示框架,缺省值为True,可通过hasFrame()和setFrame()方法来访问
  • echoMode:echoMode属性控制行编辑器的回显模式,其类型为枚举类型QLineEdit.EchoMode,缺省值为QLineEdit.Normal,可通过方法setEchoMode() 和 echoMode()来访问
  • cursorPosition:cursorPosition光标位置,缺省值为0,可以通过cursorPosition()和setCursorPosition()来访问
  • alignment:alignment为对齐方式,类型为Qt.Alignment,缺省值为 Qt.AlignLeft 与Qt.AlignVCenter的求或的值,可通过alignment()和setAlignment()方法访问
  • dragEnabled:dragEnabled用于控制行编辑器在用户选择了文本后按下鼠标开始移动时是否开始拖动,缺省值为False,可通过dragEnabled()和setDragEnabled()访问
  • readOnly:readOnly控制行编辑器是否只读,缺省为False,可通过方法isReadOnly()和setReadOnly()访问
  • placeholderText:placeholderText为行编辑器没有字符时显示的灰色占位字符,缺省值为空字符串,可通过方法placeholderText() 和setPlaceholderText()来访问
  • cursorMoveStyle:cursorMoveStyle用于控制行编辑器中光标的移动样式,其类型为枚举类型Qt.CursorMoveStyle,缺省值为Qt.LogicalMoveStyle ,可通过方法cursorMoveStyle()、setCursorMoveStyle()来访问
  • clearButtonEnabled:clearButtonEnabled用于控制在行编辑器右边是否显示一个可以清空文本的按钮,缺省值为False,可使用方法isClearButtonEnabled()、setClearButtonEnabled()来访问。

除了以上Designer中可设置的属性之外,行编辑器还有如下重要属性:

  • acceptableInput:acceptableInput属性用于确认输入是否满足inputMask和validator的要求,可通过hasAcceptableInput()访问。
  • displayText:displayText属性保存显示的文字,正常情况下与text属性一样,但开启echoMode的密码模式或无回显模式时返回不一样,如密码可能返回星号字符串、无回显返回空字符串,可通过displayText()方法访问
  • hasSelectedText :hasSelectedText 属性用于确认当前是否有选中的文本,可通过方法hasSelectedText() 访问
  • selectedText :selectedText 属性用于获取当前选择的文本,通过方法selectedText()方法
  • modified:modified属性用于确认文本是否修改过,当调用setText设置文本时该属性会置为false,当用户改变了文本时为True,可通过isModified()和setModified()方法访问
  • undoAvailable:undoAvailable属性用于确认undo是否可用,当用户修改了数据时undo就可用,可通过方法isUndoAvailable()方法访问
  • redoAvailable:redoAvailable用于确认是否可以进行redo操作,redo操作是在执行undo之后可用,可通过方法isRedoAvailable() 访问

三、重要方法

3.1、addAction方法

addAction方法可以在行编辑器的头或尾增加一个带图标的QAction对象,通过QAction对象的信号关联槽方法可以实现特定场景的处理,如在行编辑器中查找、清除或其他操作。调用方法:

  • addAction(QAction action, ActionPosition position)
  • addAction(const QIcon icon, ActionPosition position)

示例代码:

		icon = QtGui.QIcon("searchicon.gif")
self.actionfind = QtWidgets.QAction(icon,'find',self)
self.actionfind.triggered.connect(self.findText)
self.input_watermark.addAction(self.actionfind, QtWidgets.QLineEdit.LeadingPosition)

执行截图:

3.2、backspace方法和del方法

如果行编辑器中没有选择文本,backspace删除光标左侧的字符,并将光标向左移动一个位置,del删除光标右侧的字符。如果选择了任何文本,则光标将移动到选定文本的开头并删除选定文本。

3.3、cursorForward和cursorBackward方法

  • cursorForward(bool mark, int steps = 1)

    将光标向前移动steps 个字符,如果mark为True,则经过的每个字符都将添加到选定内容中;如果mark为False,则经过字符的选择标记都被清除。
  • cursorBackward(bool mark, int steps = 1)

    将光标回退步steps 个字符,如果mark为True,则回退经过的每个字符都将添加到选定内容中;如果mark为False,则经过字符的选择标记都被清除。

3.4、cursorWordBackward和cursorWordForward方法

cursorWordBackward和cursorWordForward方法将光标后退或前移一个词。

  • cursorWordBackward(bool mark)
  • cursorWordForward(bool mark)

    如果mark为True,经过的词会被选中,否则会清除选中。

3.5、deselect、selectionStart方法

deselect将当前选中的文本去选择,selectionStart返回选中文本的第一个字符位置,如果无文本选中则返回-1。

3.6、setSelection方法

  • setSelection(int start, int length)

    将start位置开始的长度为length的文本选中,length可以为负数,表示向左选择。

3.7、setValidator和setValidator方法

  • setValidator(QValidator v)
  • validator()

    这两个方法用于访问行编辑器设置的校验对象,校验对象设置后,不符合校验要求的输入被拦截但无任何信息输出。

四、信号

  • cursorPositionChanged(int old, int new):每当光标移动时,就会发出cursorPositionChanged信号。以前的位置保存在old中,新的保存在new中
  • editingFinished():当在行编辑器中按下回车键或行编辑器失去焦点时发出editingFinished信号,但当行编辑器上设置了设置了一个validator或inputMask且输入数据不满足约束时,回车键不会触发本信号
  • returnPressed():当在行编辑器中按下回车键时发出returnPressed信号,但当行编辑器上设置了设置了一个validator或inputMask且输入数据不满足约束时,回车键不会触发本信号
  • selectionChanged():当行编辑器中的选择范围发生变化时发出selectionChanged信号
  • textChanged(text):当行编辑器中的文本发生变化(包括调用setText改变文本)时发射本信号,text为最新文本
  • textEdited(text):当行编辑器中的文本发生手工编辑时发射本信号,text为最新文本

五、槽方法

这些槽方法是执行行编辑器的相关操作时被调用:

  • clear()
  • copy()
  • cut()
  • paste()
  • redo()
  • selectAll()
  • setText( str)
  • undo()

六、小结

行编辑器用于进行单行文本的编辑,可以使用setText()或insert()更改文本,可以执行undo和redo,文本可以使用text()方法获取,文本的长度可以限制为maxLength()大小。通过更改行编辑的echoMode(),它还可以用作“只写”字段或用于输入密码等,可以使用validator()或inputMask()来约束输入数据的格式。

在设置了EchoMode不同模式的情况下,显示的文本可能和真正的文本不同,显示文本可以使用displayText()检索。文本可以使用setSelection()或selectAll()进行选择,选择文本可以执行cut、copy和paste操作,执行操作时相关的槽方法会执行。

当文本更改时,将发出textChanged()信号;当文本更改不是通过调用setText()时,将发出textEdited()信号;当光标移动时,将发出cursorPositionChanged()信号;当按下回车键或回车键时,将发出returnPressed()信号。

编辑完成后,无论是因为行编辑失去焦点还是按下回车键,都会发出editing finished()信号。

注意,如果在edit行上设置了验证器,那么只有验证器返回QValidator.Acceptable时,才会发出returnPressed()/editingFinished()信号。

行编辑器还提供了一个上下文菜单(通常通过鼠标右键单击调用),菜单提供了一些编辑选项。

老猿Python,跟老猿学Python!

PyQt(Python+Qt)学习随笔:QLineEdit行编辑器功能详解的更多相关文章

  1. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性

    老猿Python博文目录 老猿Python博客地址 一.属性的作用 dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖 ...

  2. PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系&g ...

  3. PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...

  4. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...

  5. PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑>中,老猿觉得dragE ...

  6. PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项

    老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...

  7. PyQt(Python+Qt)学习随笔:Qt Designer中部件的autoFillBackground属性

    autoFillBackground属性可以确认部件背景是否自动填充,如果自动填充,Qt会在调用Paint事件之前填充部件的背景.使用的颜色由部件调色板中的QPalette.window 角色定义(关 ...

  8. PyQt(Python+Qt)学习随笔:Qt Designer中部件的accessibleDescription和accessibleName辅助阅读属性

    accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性(关于国际化请参考<PyQt(Python+Qt)学习随笔:Qt D ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中部件的toolTip、toolTipDuration、statusTip、whatsThis属性

    toolTip属性 toolTip属性设置部件的toolTip提示信息,toolTip提示信息在鼠标放到控件上会浮动出一个小框显示提示信息.默认情况下,仅显示活动窗口子部件的toolTip,可以通过在 ...

随机推荐

  1. 利用ms08_067入侵window xp sp1(English)版本

    前几天上课,老师搬出实验,自己体验了一下 1.环境配置 需要准备kali(攻击机),window xp (我这里是sp1 英文版本,标题很清楚了),攻击机和目标靶机要在同意网段下我的kali(192. ...

  2. Pycharm激活码,2020年9月29日最新激活码

    分享一个Pycharm激活码给大家: 5MJ8MJ2T1Q-eyJsaWNlbnNlSWQiOiI1TUo4TUoyVDFRIiwibGljZW5zZWVOYW1lIjoi6I635Y+W77yaIG ...

  3. Oracle(第二天)

    一.外键(foreign key):constraint , refenerces 例如:sno number(7) constraint fk_sno references student(sno) ...

  4. 解决 cannot resolve 依赖包的问题

    在maven import的时候 报这样的错误 之前也经常碰到这样的错误,通过reimport.清缓存等方法都可以解决.但这次试了好多次都还是这样,查看maven后发现我pom文件里也没写错. 最后是 ...

  5. 基于FFmpeg的Dxva2硬解码及Direct3D显示(四)

    初始化硬解码上下文 目录 初始化硬解码上下文 创建解码数据缓冲区 创建IDirectXVideoDecoder视频解码器 设置硬解码上下文 解码回调函数 创建解码数据缓冲区 这一步为了得到 LPDIR ...

  6. Python 中 'unicodeescape' codec can't decode bytes in position XXX: trun错误解决方案

    window 读取文件可以用\,但是在字符串中\是被当作转义字符来使用,'C:\Users\FrankYuan\Pictures\Camera Roll\WIN_20161010_08_51_57_P ...

  7. ceph与flashcache的around模式结合启动问题

    问题 通过对我们的启动流程看了下,目前是穿到一个脚本里面的,然后这个脚本是用无限循环的方式去执行一些事情,这个地方不符合松耦合的设计,一个模块做一个事情,两个并不相关的功能不要嵌入另一个脚本,否则出现 ...

  8. android intent-filter 注册网页链接打开app

    如下实现注册m.hao123.com的链接: <intent-filter><category android:name="android.intent.category. ...

  9. React native路由跳转navigate、push、replace的区别

    由于没有系统的去学习RN,对路由跳转了解不多,只是跟着项目在做,抽点时间简单学习一下RN路由跳转方法区别,总结如下: 如上图,外部是一个栈容器,此时A页面在最底部,navigate到B页面,为什么此时 ...

  10. 企业级工作流解决方案(十二)--集成Abp和ng-alain--用户身份认证与权限验证

    多租户 如果系统需要支持多租户,那么最好事先定义好多租户的存储部署方式,Abp提供了几种方式,根据需要选择,每一个用户身份认证与权限验证都需要完全的隔离 这里设计的权限数据全部存储在缓存中,每个租户单 ...