QLineEdit理论总结
- 1. 简述
- 2. 输入模式
- 3. 输入限制
- 4. 文本操作槽函数
- 3. 信号
- 4. 快捷键
- 5. 外观
1. 简述
QLineEdit 是一个有用的编辑功能类,主要是处理输入和编辑单行纯文本 ,主要是单行哦,就用来输入简单,短小的字符串。内部其实已经封装好了包括撤消和重做、剪切和粘贴以及拖放等功能。也就是鼠标右键菜单,已以及键盘快捷键的功能。同时QLineEdit还支持对内容的输入进行校验之类的、显示形式呀都有用得到的。
2. 输入模式
通过更改QLineEdit的 echoMode(),它也可以用作“只写”字段,用于密码等输入。
输入模式 | 含义 |
---|---|
QLineEdit::Normal | 默认的就是输入所见所得 |
QLineEdit::NoEcho | 和 linux 输入用户密码一样,输入了但是没得回显的哈 |
QLineEdit::Password | 输入的字符串是用 ● 表示,不编辑的时候也是带密码的字符,再编辑的时候也不会全部清空 |
QLineEdit::PasswordEchoOnEdit | 在编辑时显示输入的字符,否则显示带有密码的字符,重新输入的时候就全部清空了 |
效果如下
3. 输入限制
文本的长度可以限制为 maxLength()。可以使用 validator() 或 inputMask() 或两者任意约束文本。样子就像下面,下面的输入框都是带了Mask的,输入数据后的样子
输入掩码很像的匹配规则很像正则表达式的。还是一样的,虽然有这个输入的mask,但是我们还是可以通过 text() 获取去掉 mask中的分隔符后 也就是 ‘_’ 的真实数据,如果想获取带mask的数据的话就可以用 displayText() 来得到
输入掩码是输入模板字符串。就包括以下元素:
组件 | 含义 |
---|---|
Mask Characters | 定义在此位置被视为有效的输入字符的类别 |
Meta Characters | 各种特殊含义 |
Separators | 所有其他字符都被视为不可变的分隔符 |
Mask Characte 的详细
组件 | 含义 |
---|---|
A | 字母类别的字符,例如 A-Z、a-z。 |
a | 允许但不是必需的字母类别的特征。 |
N | 字母或数字类别的字符,例如 A-Z、a-z、0-9。 |
n | 允许但不是必需的字母或数字类别的字符。 |
X | 所需的任何非空字符。 |
x | 允许但不是必需的任何非空字符。 |
9 | 所需数字类别的字符,例如 0-9。 |
0 | 允许但不是必需的数字类别的字符。 |
D | 数字类别的字符,并且需要大于零,例如 1-9 |
d | 允许大于零的“数字”类别字符,但不是必需的,例如 1-9。 |
# | 允许使用数字类别或加号/减号的字符,但不是必需的。 |
H | 需要十六进制字符。A-F,A-F,0-9。 |
h | 允许使用十六进制字符,但不是必需的。 |
B | 需要二进制字符。0-1. |
b | 允许使用二进制字符,但不是必需的。 |
Mask Characte 的详细
组件 | 含义 |
---|---|
> | 以下所有字母字符均为大写。 |
< | 以下所有字母字符均为小写。 |
! | 关闭大小写转换。 |
;c | 终止输入掩码并将空白字符设置为 c。 |
[ ]{ } | 保留。 |
\ | 使用 转义上面列出的特殊字符,以将它们用作分隔符。把转义字符当普通字符使用 |
掩码例子
Mask | 含义 |
---|---|
000.000.000.000;_ | 限制IP地址; 占位符 _ |
HH:HH:HH:HH:HH:HH;_ | MaC 地址 占位符为 _ |
0000-00-00 | 日期; 占位符 space空白符 |
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# | License 号码; 占位符 是 #,同时 会自动把 小写字母转成大小写字母. |
结果如下
4. 文本操作槽函数
您可以使用 setText() 或 insert() 修改文本。使用 text() 获取;这个是保存真实数据的函数
显示的文本使用 displayText() 获取。真的就只是显示这个显示的文本。这个就和显示模式有关系的。如果 echoMode 为 Normal 则返回与 text() 相同的值;如果 EchoMode 是 Password 或 PasswordEchoOnEdit,则返回一串依赖于平台的密码掩码字符 “******”;如果 EchoMode 为 NoEcho,则返回一个空字符串 “ ”。
可以使用 setSelection() 或 selectAll() 选择文本,并且可以对所选内容进行 cut()、copy() 和 paste()。文本可以与 setAlignment() 对齐。
常用的槽函数
函数名 | 功能 |
---|---|
clear() | 清除字符串 |
copy() const | 复制所有字符串 |
cut() | 剪切 选中字符串 |
paste() | 粘贴字符串 |
redo() | 恢复上一次操作 |
selectAll() | 全选 |
setText(const QString &) | 设置文本 |
undo() | 撤销上一次操作 |
3. 信号
当文本更改时,发出文本更改()信号;当文本更改而不是通过调用 setText() 时,会发出 textEdited() 信号;当光标移动时,会发出光标位置更改()信号;当按下 Return 或 Enter 键时,会发出 returnPressed() 信号。
编辑完成后,由于QLineEdit失去焦点或按下 Return/Enter 键,都会发出 editFinish() 信号。
请注意,如果在QLineEdit上设置了验证器,则只有在验证器返回 QValidator::Acceptable 时才会发出 returnPressed()/editDone() 信号。
4. 快捷键
默认键绑定如下所述。QLineEdit还提供了一个上下文菜单(通常由鼠标右键单击调用),其中显示了其中一些编辑选项。
按键 | 含义 |
---|---|
Left Arrow | Moves the cursor one character to the left. |
Shift+Left Arrow | Moves and selects text one character to the left. |
Right Arrow | Moves the cursor one character to the right. |
Shift+Right Arrow | Moves and selects text one character to the right. |
Home | Moves the cursor to the beginning of the line. |
End | Moves the cursor to the end of the line. |
Backspace | Deletes the character to the left of the cursor. |
Ctrl+Backspace | Deletes the word to the left of the cursor. |
Delete | Deletes the character to the right of the cursor. |
Ctrl+Delete | Deletes the word to the right of the cursor. |
Ctrl+A | Select all. |
Ctrl+C | Copies the selected text to the clipboard. |
Ctrl+Insert | Copies the selected text to the clipboard. |
Ctrl+K | Deletes to the end of the line. |
Ctrl+V | Pastes the clipboard text into line edit. |
Shift+Insert | Pastes the clipboard text into line edit. |
Ctrl+X | Deletes the selected text and copies it to the clipboard. |
Shift+Delete | Deletes the selected text and copies it to the clipboard. |
Ctrl+Z | Undoes the last operation. |
Ctrl+Y | Redoes the last undone operation. |
5. 外观
还有 placeholderText 这个属性,通过 setPlaceholderText() 来设置QLineEdit 编辑显示灰色占位符文本,默认情况下是空字符,需要自己手动设置的。
还有就是 清空按钮是否显示 可以用 后面这个函数设置 setClearButtonEnabled()
还有自动补全的功能。后面会专门记录一下 QCompleter 这个补全器
默认情况下,QLineEdits具有由平台样式指南指定的外边框;您可以通过调用 setFrame(false) 将其关闭。
但是我不推荐这么做,一般他们的做法就是用的QSS来美化完成的。