Qt4 立即验证和编辑完成的信号

Qt4 立即验证和编辑完成的信号,qt4,Qt4,我想立即验证我的编辑行。我想在用户离开编辑行字段后立即告诉他,他输入的值可能不正确 因此,我将线edit与editingFinished()信号连接起来。但是,问题是,当我在行编辑之外单击时(例如,当我只单击对话框时),不会发出信号。当我单击对话框上的其他行编辑时,它将发出。所以我在寻找每次在编辑行外单击时发出的信号。我怎样才能做到这一点 connect(mLineEdit, SIGNAL(editingFinished()), this, SLOT(Validate())) MyDlg::V

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

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

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
进行子类化,并提供
validate
的实现,然后在编辑行上安装您自己的自定义验证器

如果所有这些都失败了,您可以像上面那样继续,但是您需要收听
textChanged(const QString&)
信号或
textcedited(const QString&)
信号(前者即使在以编程方式更改行编辑文本时也会发出,而后者则不会)