我有一个带掩码和qvalidator的QLineedit(子类)
如果输入与掩码或验证器不匹配,我如何防止移开焦点?
因为掩码和qvalidator都不会阻止从QLineEdit移开焦点 .
编辑完成不起作用,因为:
void QLineEdit :: editingFinished()
按下Return或Enter键或线编辑失去焦点时会发出此信号 . 请注意,如果在行编辑上设置了validator()或inputMask()并按下了/ return,则仅当输入跟随inputMask()并且validator()返回QValidator时才会发出editingFinished()信号: :可接受“ .
void MainWindow:n_lineEdit_editingFinished()
{
if (ui->lineEdit->text() != "1111") ui->lineEdit->setFocus();
}
因此,mask(验证器)不能与editingFinsihed信号一起使用 .
加上我试过这个
bool MainWindow::eventFilter(QObject *filterObj, QEvent *event)
{
if (filterObj == ui->lineEdit ) {
if(event->type() == QEvent::FocusOut) {
if (ui->lineEdit->text() != "1111") { ui->lineEdit-`>setFocus();};
return true;
};
};
return false;
}
谢谢阿提拉
1 回答
从Qt的文档:
但您可以将重点放在每个事件上,而不仅仅是
FocusOut
: