单行文本框,用来接收用户的输入
占位字符串
即文本框中输入内容为空时,显示的字符,用来提示用户文本框中应该输入什么内容
// 获取和设置占位字符串
QString placeholderText() const
void setPlaceholderText(const QString &)
清除按钮
打开后,输入文本时清除按钮会出现,如下,点击可以清除掉当前的输入
bool isClearButtonEnabled() const
void setClearButtonEnabled(bool enable)
设置输入的最大长度
设置之后,输入字符的个数不能超过这个最大长度
int maxLength() const
void setMaxLength(int)
撤销和恢复(undo和redo)
撤销和恢复的效果如下:
这是两个槽函数,可以直接调用,也可以绑定到某个信号
[slot] void QLineEdit::undo()//撤销输入
[slot] void QLineEdit::redo()//恢复输入
还可以判断是否可以撤销和恢复,比如撤销到最开始后就不能撤销了,将按钮置灰,恢复到最后后就不能撤销了
bool isUndoAvailable() const//是否可以撤销
bool isRedoAvailable() const//是否可以恢复
对齐方式
和QLabel一样,文本框中的内容在水平和垂直两个方向上的对齐方式
// 获取和设置文本的对齐方式
Qt::Alignment alignment() const
void setAlignment(Qt::Alignment flag)
flag的取值如下:
Qt::AlignLeft
水平方向-左对齐Qt::AlignRight
水平方向-右对齐Qt::AlignHCenter
水平方向-居中对齐Qt::AlignTop
垂直方向-上对齐Qt::AlignBottom
垂直方向-下对齐Qt::AlignVCenter
垂直方向-居中对齐Qt::AlignCenter
(AlignVCenter
|AlignHCenter
) 垂直方向和水平方向-居中对齐
上面的可以用 | 操作符连接,同时指定多个对齐方式
回显模式
就是输入的内容如何显示
// 获取和设置回显模式
QLineEdit::EchoMode echoMode() const
void setEchoMode(QLineEdit::EchoMode)
QLineEdit::EchoMode有4个取值:
- QLineEdit::Normal
正常模式。输入什么就显示什么,默认是这种方式
- QLineEdit::Password
密码模式。输入的内容显示为小圆圈,如下:
- QLineEdit::NoEcho
无回显模式。无论输入什么,在文本框中都不会显示,别人无法看到输入的内容和输入字符的长度
如下:
- QLineEdit::PasswordEchoOnEdit
即正在输入时,正常显示,失去焦点时输入的内容以密码模式显示,也就是小圆圈,如下:
读写控制
用来设置文本框是否可编辑、是否使能
// 获取和设置文本框的只读属性
bool isReadOnly() const
void setReadOnly(bool)
// 获取和设置文本框的是否使能
bool isEnabled() const
void setEnabled(bool)
设置为只读 和 设置为禁能,都无法对文本框进行编辑
区别:只读时文本框不会置灰,禁能时文本框会置灰
格式控制
即指定文本框输入特定格式的内容。比如输入电话号码格式的文本(11个数字)
适合用来控制 定长的格式
格式控制字符串的字符的含义可以查阅该函数对应的文档
// 设置和获取格式控制
QString inputMask() const
void setInputMask(const QString &inputMask)
- 无格式(默认为无格式)
// 接受任何字符的输入
setInputMask("");
- 电话号码
// 9 - 表示要求输入0-9的数字
// ;# - ;表示格式字符串结束,并且未输入时显示#
ui->leMask->setInputMask("99999999999;#");
即输入需要输入11位数字,未输入的数字显示#,效果如下:
- 秘钥
// A - 表示要求输入字符
//> - 表示后面的字符都变成大写
// ;* - ;表示格式字符串结束,并且未输入时显示*
ui->leMask->setInputMask(">AAAAA-AAAAA-AAAAA-AAAAA-AAAAA;*");
效果如下:
还可以通过设置验证器来进行格式控制
//获取验证器
const QValidator *validator() const
//设置验证器
void setValidator(const QValidator *v)
有三种Validator:
- QIntValidator
- QDoubleValidator
- QRegularExpressionValidator
只允许输入10到100的整数
QIntValidator* int_val=new QIntValidator(10,100,this);
le->setValidator(int_val);
只允许输入10到20之间的浮点数,小数位数不能超过3位
QDoubleValidator* double_val=new QDoubleValidator(10,20,3,this);
//不用科学技术法
double_val->setNotation(QDoubleValidator::StandardNotation);
le->setValidator(double_val);
只允许输入a~z的字母
//正则验证器几乎可以控制任何你想输入的内容(只要正则表达式正确)
//只能输入a~z的字符
auto reg_validator=new QRegularExpressionValidator(QRegularExpression("[a-z]+"),this);
ui->lineEdit->setValidator(reg_validator);
常用信号
常用的两几个信号
- textchanged信号,只要文本框内容一发生改变,就会发射该信号(setText方法也会触发)
// 只要文本框内容一发生改变,就会发射该信号
void textChanged(const QString &text)
- editingFinished, 当输入完毕时,发射该信号;输入完毕就是:按了enter 键 或者 文本框失去焦点
// 当输入完毕时,发射该信号
//输入完毕:按了enter 键 或者 文本框失去焦点
void editingFinished()
- returnPressed,按下回车,且输入的文本的格式符合格式控制时会发射
//按下回车,且输入的文本的格式校验通过时会发射
[signal] void QLineEdit::returnPressed()
- textEdited,文本只要一被编辑了就会发射,(和textchanged信号区别:setText方法不会触发)
//用户输入文本才会触发
[signal] void QLineEdit::textEdited(const QString &text)
样式表
//边框
//圆角
//左右内边距
//背景黄色
//选中的文字背景色:深灰
QLineEdit {
border: 2px solid gray;
border-radius: 10px;
padding: 0 8px;
background: yellow;
selection-background-color: darkgray;
}
//密码模式下,回显的字符
//(设置密码模式的代码需要在设置样式表之前,这个属性选择器的生效)
QLineEdit[echoMode="2"] {
lineedit-password-character: 9738;
}
//只读状态下:背景为浅蓝色
QLineEdit:read-only {
background: lightblue;
}