0

我在尝试验证 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。有什么建议么?

4

1 回答 1

3

我的猜测是:

  1. 您的编辑框在表单上彼此靠近或/和在标签顺序中彼此相邻;
  2. 两个编辑框默认为空;
  3. 当您将焦点从空nameEdit移动到下一个小部件fileextensionEdit时,会弹出第一个消息框;
  4. 此消息框也会导致 fileextensionEdit 失去焦点,并且由于它是空的,因此会显示第二个消息框。

希望这会有所帮助,问候

于 2011-02-15T03:00:05.977 回答