立即验证和编辑完成信号

  • 本文关键字:信号 编辑 验证 qt4
  • 更新时间 :
  • 英文 :


我想立即验证我的编辑行。我想在用户离开编辑行字段后立即告诉他输入的值可能不正确。

所以我将行编辑与编辑完成()信号连接起来。但是,问题是当我单击行编辑之外时,例如当我单击对话框时,不会发出信号。当我单击对话框中的其他行编辑时,它会发出。所以我正在寻找每次在编辑行外单击时发出的信号。我怎样才能做到这一点?

connect(mLineEdit, SIGNAL(editingFinished()), this, SLOT(Validate()))
MyDlg::Validate()
{
     QString text = mLineEdit->text();
     bool isValid = check_if_valid(text);
     if(!isValid)
         // set the color of edit line to be red        
}

首先,考虑在行编辑中使用QValidator实现来执行验证(QIntValidatorQDoubleValidatorQRegExpValidator)。 您可以使用 QLineEdit::setValidator(QValidator*) 安装验证程序。 如果这些验证器之一不适合您,那么通过子类化QValidator并提供validate的实现来编写自己的验证器可能是明智的,然后在行编辑中安装您自己的自定义验证器。

如果所有这些失败,您可以按照上述方法继续,但您需要收听textChanged(const QString&)信号或textEdited(const QString&)信号(即使以编程方式更改行编辑文本,也会发出前者,而后者则不会)。

最新更新