0

QT4 で一部の入力を検証しようとして問題が発生しています。

2 つの textEdit フィールドを持つフォームがあります。1 つのフィールドがフォーカスを失ったときに、フィールドが空かどうかを確認し、空である場合はユーザーに警告するようにします。

これが私のコードです:

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) にフォーカスを失うと、両方のシグナルから MessageBox を取得することです。助言がありますか?

4

1 に答える 1

3

私の推測は次のとおりです。

  1. 編集ボックスは、フォーム上で互いに近くに配置されているか、またはタブ オーダーで互いに隣り合って配置されています。
  2. デフォルトでは両方の編集ボックスが空です。
  3. 空のnameEditから次のウィジェットであるfileextensionEditにフォーカスを移動すると、最初のメッセージ ボックスがポップアップします。
  4. このメッセージ ボックスにより、fileextensionEdit もフォーカスを失い、空であるため、2 番目のメッセージ ボックスが表示されます。

これが役に立てば幸いです、よろしく

于 2011-02-15T03:00:05.977 に答える