表单输入验证,多个焦点问题

时间:2011-02-15 01:25:25

标签: c++ qt qt4 qt-designer qtextedit

我在尝试验证QT4中的某些输入时遇到了问题。

我有一个包含2个textEdit字段的表单。当一个字段失去焦点时,我希望它检查字段是否为空,如果是,则提醒用户。

这是我的代码:

void newconsole::on_nameEdit_lostFocus()
{
    if (this->ui->nameEdit->text().size() < 1)
    {
        QMessageBox b;
        b.setText("Name must be longer than 0 characters.");
        b.setIcon(QMessageBox::Information);
        b.setStandardButtons(QMessageBox::Ok);
        b.show();
    }
}

void newconsole::on_fileextensionEdit_lostFocus()
{
    if (this->ui->fileextensionEdit->text().size() < 1)
    {
        QMessageBox b;
        b.setText("File extension must be longer than 0 characters.");
        b.setIcon(QMessageBox::Information);
        b.setStandardButtons(QMessageBox::Ok);
        b.show();
    }
}

我的问题是,当我运行表单并失去对第一个textEdit(nameEdit)的关注时,我从BOTH信号中获取一个MessageBox。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

我的猜测是:

  1. 您的编辑框在表单上彼此靠近或/并在Tab键顺序中彼此相邻;
  2. 默认情况下,两个编辑框都为空;
  3. 当您将焦点从空的 nameEdit 移动到下一个小部件 fileextensionEdit 时,会弹出第一个消息框;
  4. 此消息框导致fileextensionEdit也失去焦点,因为它是空的,所以会显示第二个消息框。
  5. 希望这有帮助,尊重