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