1.QLineEdit
某些时候我们需要限制QlineEdit的输入格式,比如只能输入数字、只能输入英文,这个时候需要设置正则表达式。例:
//设置只能输入数字
QRegExpValidator *pRevalidotor = new QRegExpValidator(QRegExp("[0-9]{20}"), this);
ui.lineEdit->setValidator(pRevalidotor);
在设置QValidator之后,会导致QLineEdit里的信号editingFinished()、returnPressed()等不能正常与外界绑定的槽不能正常连通。
这个时候需要这样做:
1.安装事件过滤器ui.lineEdit->installEventFilter(this);
2.重写bool eventFilter(QObject *target, QEvent *event);
bool eventFilter(QObject *target, QEvent *event)
{
if (target == ui.lineEdit && event->type() == QEvent::FocusIn)
{
//设置只能输入数字
QRegExpValidator *pRevalidotor = new QRegExpValidator(QRegExp("[0-9]{20}"), this);
ui.lineEdit ->setValidator(pRevalidotor);
ui.lineEdit ->setAttribute(Qt::WA_InputMethodEnabled, false);
}
if (target == ui.lineEdit && event->type() == QEvent::FocusOut)
{
if (ui.lineEdit ->validator() != nullptr)
{
delete ui.lineEdit ->validator();
ui.lineEdit ->setValidator(nullptr);
}
}
return QWidget::eventFilter(target, event);
}
大家觉得OK,请点个赞👍👍👍,谢谢。
大家觉得OK,请点个赞👍👍👍,谢谢。