本系列文章长期更新修改.
QLineEdit,最基础的单行输入框.
属性:
Types
- enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit }
Methods
- __init__ (self, QWidget parent = None)
- __init__ (self, QString, QWidget parent = None)
- Qt.Alignment alignment (self)
- backspace (self)
- changeEvent (self, QEvent)
- clear (self)
- QCompleter completer (self)
- contextMenuEvent (self, QContextMenuEvent)
- copy (self)
- QMenu createStandardContextMenu (self)
- cursorBackward (self, bool mark, int steps = 1)
- cursorForward (self, bool mark, int steps = 1)
- int cursorPosition (self)
- int cursorPositionAt (self, QPoint pos)
- QRect cursorRect (self)
- cursorWordBackward (self, bool mark)
- cursorWordForward (self, bool mark)
- cut (self)
- del_ (self)
- deselect (self)
- QString displayText (self)
- bool dragEnabled (self)
- dragEnterEvent (self, QDragEnterEvent)
- dragLeaveEvent (self, QDragLeaveEvent e)
- dragMoveEvent (self, QDragMoveEvent e)
- dropEvent (self, QDropEvent)
- EchoMode echoMode (self)
- end (self, bool mark)
- bool event (self, QEvent)
- focusInEvent (self, QFocusEvent)
- focusOutEvent (self, QFocusEvent)
- bool hasAcceptableInput (self)
- bool hasFrame (self)
- bool hasSelectedText (self)
- home (self, bool mark)
- initStyleOption (self, QStyleOptionFrame option)
- QString inputMask (self)
- inputMethodEvent (self, QInputMethodEvent)
- QVariant inputMethodQuery (self, Qt.InputMethodQuery)
- insert (self, QString)
- bool isModified (self)
- bool isReadOnly (self)
- bool isRedoAvailable (self)
- bool isUndoAvailable (self)
- keyPressEvent (self, QKeyEvent)
- int maxLength (self)
- QSize minimumSizeHint (self)
- mouseDoubleClickEvent (self, QMouseEvent)
- mouseMoveEvent (self, QMouseEvent)
- mousePressEvent (self, QMouseEvent)
- mouseReleaseEvent (self, QMouseEvent)
- paintEvent (self, QPaintEvent)
- paste (self)
- redo (self)
- selectAll (self)
- QString selectedText (self)
- int selectionStart (self)
- setAlignment (self, Qt.Alignment flag)
- setCompleter (self, QCompleter completer)
- setCursorPosition (self, int)
- setDragEnabled (self, bool b)
- setEchoMode (self, EchoMode)
- setFrame (self, bool)
- setInputMask (self, QString inputMask)
- setMaxLength (self, int)
- setModified (self, bool)
- setReadOnly (self, bool)
- setSelection (self, int, int)
- setText (self, QString)
- setValidator (self, QValidator)
- QSize sizeHint (self)
- QString text (self)
- undo (self)
- QValidator validator (self)
Qt Signals
- void cursorPositionChanged (int,int)
- void editingFinished ()
- void returnPressed ()
- void selectionChanged ()
- void textChanged (const QString&)
- void textEdited (const QString&)
详细分析:
1.显示模式
QLineEdit有四种显示模式,可通过下面函数设置:
- EchoMode echoMode (self)
- setEchoMode (self, EchoMode)
- enum EchoMode { Normal, NoEcho, Password, PasswordEchoOnEdit }
Constant | Value | 描述 |
---|---|---|
QLineEdit.Normal | 0 | 默认模式,正常显示 |
QLineEdit.NoEcho | 1 | 完全不显示输入,部分操作被禁止 |
QLineEdit.Password | 2 | 密码模式,像输入密码那样,把输入内容变成一个个圆圈 |
QLineEdit.PasswordEchoOnEdit | 3 | 输入时显示内容,失去焦点时内容变成圆圈 |
2.属性,限制和状态的相关函数(打*号为很少用)
function | 属性 | 描述 |
---|---|---|
__init__ (self, QWidget parent = None) __init__ (self, QString, QWidget parent = None) | 初始化 | 第二个init能设置默认内容 |
QString text (self) setText (self, QString) | 内容 | |
QString displayText (self) | *获取显示的内容 | 与text()的主要区别是当QLineEdit是密码模式的时候,这个函数得到是圆圈 |
int maxLength (self) setMaxLength (self, int) | 输入文本的长度限制 | 默认值是32767 |
bool isReadOnly (self) setReadOnly (self, bool) | 是否只读 | 默认是false |
bool isModified (self) setModified (self, bool) | 内容是否被修改过 | 脏位,setText()不会影响这个属性 |
bool dragEnabled (self) setDragEnabled (self, bool b) | 内容是否能被拖动 | 默认是false |
int cursorPosition (self) setCursorPosition (self, int) | 光标位置 | |
QRect cursorRect (self) | *光标位置+宽高 | 这个位置是坐标位置,不是文本位置 |
int cursorPositionAt (self, QPoint pos) | *坐标位置转文本位置 | |
int selectionStart (self) | 被选择文本的开头位置 | 没有选择文本的时候,返回-1 |
QString selectedText (self) | 被选择的文本 | |
bool hasSelectedText (self) | 是否选择了文本 | |
bool isRedoAvailable (self) | *当前是否能重做 | |
bool isUndoAvailable (self) | *当前是否能撤销 |
3.键盘特殊输入与模拟操作
QLineEdit支持常用的文本快捷键如复制粘贴等,并提供了一套函数模拟这些操作.
Keypress | 描述 | 模拟函数 |
---|---|---|
Left Arrow | 光标向左移动 | cursorBackward (self, bool mark, int steps = 1) |
Shift+Left Arrow | 光标向左移动,同时选中文本 | cursorBackward (self, bool mark, int steps = 1) |
Right Arrow | 光标向右移动 | cursorForward (self, bool mark, int steps = 1) |
Shift+Right Arrow | 光标向左移动,同时选中文本 | cursorForward (self, bool mark, int steps = 1) |
Home | 光标移到最始端 | home (self, bool mark) |
End | 光标移到最末端 | end (self, bool mark) |
Backspace | 在光标左侧删除一个字符或选中的文本 | backspace (self) |
Ctrl+Backspace | 在光标左侧删除一个词或选中的文本 | 无 |
Delete | 在光标右侧删除一个字符或选中的文本 | del_ (self) |
Ctrl+Delete | 在光标右侧删除一个词或选中的文本 | 无 |
Ctrl+A | 全选 | selectAll (self) |
Ctrl+C | 复制 | copy (self) |
Ctrl+Insert | 复制 | copy (self) |
Ctrl+K | * | * |
Ctrl+V | 粘贴 | paste (self) |
Shift+Insert | 粘贴 | paste (self) |
Ctrl+X | 剪切 | cut (self) |
Shift+Delete | 剪切 | cut (self) |
Ctrl+Z | 撤销 | undo (self) |
Ctrl+Y | 重做 | redo (self) |
无 | 光标向左移动一个词 | cursorWordBackward (self, bool mark) |
无 | 光标向右移动一个词 | cursorWordForward (self, bool mark) |
无 | 取消选择 | deselect (self) |
无 | 清空内容 | clear (self) |
无 | 插入一个字符串 | insert (self, QString) |
无 | 选择一个子串(beg,len) | setSelection (self, int, int) |
1.所有移动的操作函数里都带有mark,mark为true代表移动时要顺便选中文本.只要移动中一出现false,马上取消选择. | ||
2.Ctrl+K是删除光标右侧该行的所有字符,在windows下无效 |
4.信号
- void cursorPositionChanged (int,int)
- 光标移动的时候激活
- 两个参数分别为旧坐标和新坐标
- 输入过程中光标也算移动
- void editingFinished ()
- 失去焦点或者键入Enter后激活
- 设置了validator()验证函数或者inputMask()格式函数时,必须正确验证或符合格式才激活
- void returnPressed ()
- 键入Enter后激活
- 设置了validator()验证函数或者inputMask()格式函数时,必须正确验证或符合格式才激活
- void selectionChanged ()
- 选择的文本改变的时候激活
- 用鼠标选择文本的时候,只要鼠标移动信号就会激活
- void textChanged (const QString&)
- 文本改变时激活
- 这种改变包括使用setText()这样的函数
- void textEdited (const QString&)
- 文本改变时激活
- 这种改变不包括使用setText()这样的函数
5.输入检查
QLineEdit有两种手段对输入进行合法性检查,validator和inputMask.
- QValidator validator (self)
- QString inputMask (self)
- setValidator (self, QValidator)
- setInputMask (self, QString inputMask)
validator是Qt专门用来对输入进行合法性检查的一个类QValidator,详细用法参考QValidator.
inputMask是Qt的一个小型格式字符串,用法有点像正则表达式,但功能弱很多,详细参考inputMask.
想知道当前文本是否合法,可以调用下面函数:
- bool hasAcceptableInput (self)
注意一点,只有检查合法的情况下,上文提到的某些信号才会激活.
6.自动补全
QLineEdit能通过类QCompleter实现自动补全,详细用法参考QCompleter.
- QCompleter completer (self)
- setCompleter (self, QCompleter completer)
7.外边框
可以通过下面相关函数设置QLineEdit有或没有外边框,true表示有,默认有.
- bool hasFrame (self)
- setFrame (self, bool)
8.对齐设置
下面相关函数可以对QLineEdit的文字如何对齐进行设置.
- Qt.Alignment alignment (self)
- setAlignment (self, Qt.Alignment flag)
设置的时候使用Qt.AlignmentFlag里面的枚举量即可,但获取的时候会得到一个Qt.Alignment对象,暂时不知道这个对象如何使用.
9.待续
QMenu createStandardContextMenu (self)
QVariant inputMethodQuery (self, Qt.InputMethodQuery)
QVariant inputMethodQuery (self, Qt.InputMethodQuery)