简述
QLineEdit是一个单行文本输入框,带有撤销、剪切、粘贴以及拖拽等功能。
通过改变输入框的echoMode(),同时也可以设置为一个“只写”字段,用于输入密码等。
文本的长度可以被限制为maxLength(),可以使用一个validator()或inputMask()来任意限制文本。当在同一个输入框中切换验证器和输入掩码的时候,最好是清除验证器或输入掩码,防止不确定的行为。
用法
下面用一个小例子来展示一个QLineEdit的基础效果
效果
源码
QLineEdit *lineEdit1 = new QLineEdit;
lineEdit1->setEchoMode(QLineEdit::Normal);
lineEdit1->setPlaceholderText("Normal");
QLineEdit *lineEdit2 = new QLineEdit;
lineEdit2->setEchoMode(QLineEdit::Password);
lineEdit2->setPlaceholderText("Password");
QLineEdit *lineEdit3 = new QLineEdit;
lineEdit3->setEchoMode(QLineEdit::NoEcho);
lineEdit3->setPlaceholderText("NoEcho");
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit1);
layout->addWidget(lineEdit2);
layout->addWidget(lineEdit3);
this->setLayout(layout);
常用接口
常用属性
- 设置输入掩码
- inputMask
字符 | ASCII字母字符是必须的,A-Z、a-z。 |
---|---|
A | ASCII字母字符是允许的,但不是必须的。 |
a | ASCII字母字符是允许的,但不是必须的。 |
N | ASCII字母字符是必须的,A-Z、a-z、0-9。 |
n | ASCII字母字符是允许的,但不是必须的。 |
X | 任何字符都是必须要的。 |
x | 任何字符都是允许的,但不是必须要的。 |
9 | ASCII数字是必须要的,0-9。 |
0 | ASCII数字是允许的,但不是必须要的。 |
D | ASCII数字是必须要的,1-9。 |
d | ASCII数字是允许的,但不是必须要的 (1-9)。 |
# | ASCII数字或加/减符号是允许的,但不是必须要的。 |
H | 十六进制数据字符是必须要的,A-F、a-f、0-9。 |
h | 十六进制数据字符是允许的,但不是必须要的。 |
B | 二进制数据字符是必须要的,0-1。 |
b | 二进制数据字符是允许的,但不是必须要的。 |
> | 所有的字符字母都大写。 |
< | 所有的字符字母都小写。 |
! | 关闭大小写转换 |
\ | 使用 \ 去转义上述列出的字符。 |
掩码由掩码字符和分隔符字符串组成,后面可以跟一个分号和用于空白的字符,空白字符在编辑后总是从文本中删除。
掩码 | 小提示 |
---|---|
000.000.000.000;_ | IP地址,空白是_ |
HH:HH:HH:HH:HH:HH;_ | MAC地址 |
0000-00-00 | ISO日期,空白是空格。 |
>AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;# | License号,空白是-,并且所有(字母)字符转换为大写。 |
- 文本清除按钮
- 一个用来清除输入框中文本的按钮
- 占位符文本
- placeHolderText
- 拖拽文本
- dragEnabled
- 选中的文本
- selectedText
- 输出模式
- echoMode
常量 | 值 | 描述 |
---|---|---|
QLineEdit::Normal | 0 | 正常显示输入的字符,默认选项 |
QLineEdit::NoEcho | 1 | 不显示任何输入,常用于密码类型,其密码长度都需要保密的时候 |
QLineEdit::Password | 2 | 显示平台相关的密码掩码字符,而不是实际的字符输入 |
QLineEdit::PasswordEchoOnEdit | 3 | 在编辑的时候显示字符,负责显示密码类型 |
公有函数
- 添加动作
- addAction
效果
源码
QLineEdit *lineEdit1 = new QLineEdit;
lineEdit1->setEchoMode(QLineEdit::Normal);
lineEdit1->addAction(QIcon(":/picture/google.png"), QLineEdit::LeadingPosition);
lineEdit1->addAction(QIcon(":/picture/search.png"), QLineEdit::TrailingPosition);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit1);
this->setLayout(layout);
注:lineEdit1->addAction会返回一个QAction指针,我们可以利用这个指针获得QAction的信号并与相应槽函数绑定。
- 设置输入文本对齐方式
- setAlignment
- 设置清除按钮
- setClearButtonEnabled
效果
源码
QLineEdit *lineEdit1 = new QLineEdit;
lineEdit1->setClearButtonEnabled(true);
lineEdit1->setCursorMoveStyle(Qt::VisualMoveStyle);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit1);
this->setLayout(layout);
- 拖拽文本
- setDragEnabled
效果
源码
lineEdit1->setDragEnabled(true);
- 设置输出模式
- setEchoMode
效果
源码
QLineEdit *lineEdit1 = new QLineEdit;
lineEdit1->setEchoMode(QLineEdit::Normal);
QLineEdit *lineEdit2 = new QLineEdit;
lineEdit2->setEchoMode(QLineEdit::NoEcho);
QLineEdit *lineEdit3 = new QLineEdit;
lineEdit3->setEchoMode(QLineEdit::Password);
QLineEdit *lineEdit4 = new QLineEdit;
lineEdit4->setEchoMode(QLineEdit::PasswordEchoOnEdit);
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit1);
layout->addWidget(lineEdit2);
layout->addWidget(lineEdit3);
layout->addWidget(lineEdit4);
this->setLayout(layout);
- 设置输入掩码
- setInputMask
效果
源码
QLineEdit *lineEdit1 = new QLineEdit;
lineEdit1->setInputMask("000.000.000.000;_");
QLineEdit *lineEdit2 = new QLineEdit;
lineEdit2->setInputMask("HH:HH:HH:HH:HH:HH;_");
QLineEdit *lineEdit3 = new QLineEdit;
lineEdit3->setInputMask("0000-00-00");
QLineEdit *lineEdit4 = new QLineEdit;
lineEdit4->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;#");
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit1);
layout->addWidget(lineEdit2);
layout->addWidget(lineEdit3);
layout->addWidget(lineEdit4);
this->setLayout(layout);
- 设置占位符
- setPlaceHolderText
效果
源码
QLineEdit *lineEdit1 = new QLineEdit;
lineEdit1->setEchoMode(QLineEdit::Normal);
lineEdit1->setPlaceholderText("Normal");
QLineEdit *lineEdit2 = new QLineEdit;
lineEdit2->setEchoMode(QLineEdit::NoEcho);
lineEdit2->setPlaceholderText("NoEcho");
QLineEdit *lineEdit3 = new QLineEdit;
lineEdit3->setEchoMode(QLineEdit::Password);
lineEdit3->setPlaceholderText("PassWard");
QLineEdit *lineEdit4 = new QLineEdit;
lineEdit4->setEchoMode(QLineEdit::PasswordEchoOnEdit);
lineEdit4->setPlaceholderText("PasswordEchoOnEdit");
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(lineEdit1);
layout->addWidget(lineEdit2);
layout->addWidget(lineEdit3);
layout->addWidget(lineEdit4);
this->setLayout(layout);
槽函数
槽 | 意义 |
---|---|
clear | 清除输入框中文本 |
copy | 复制选中的文本 |
cut | 剪切选中的文本 |
paste | 将粘贴板中的文本粘贴到输入框 |
redo | 重复做 |
selectAll | 选中所有文本 |
setText | 为输入框设置文本 |
undo | 撤销 |
信号
信号 | 意义 |
---|---|
cursorPositionChanged | 鼠标位置变化 |
editingFinished | 编辑结束 |
inputRejected | 拒绝输入 |
returnPressed | 回车键按下 |
selectionChanged | 文本选择变化 |
textChanged | 输入框中文本变化(编程和用户输入) |
texEdited | 输入框中文本变化(仅限于用户输入) |
引用
[1] Qt助手