Проверка ввода формы, многократные проблемы фокуса - PullRequest
0 голосов
/ 15 февраля 2011

У меня проблема с попыткой проверки ввода в 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), я получаю MessageBox из ОБА сигналов.Есть предложения?

1 Ответ

3 голосов
/ 15 февраля 2011

мое предположение будет:

  1. ваши поля редактирования расположены близко друг к другу на форме или / и рядом друг с другом в порядке табуляции;
  2. оба поля редактированияпо умолчанию пустые;
  3. при перемещении фокуса с пустого nameEdit на следующий виджет, который fileextensionEdit , появляется первое окно сообщения;
  4. это окно сообщения приводит к тому, что fileextensionEdit также теряет фокус, и поскольку оно пустое, отображается второе окно сообщения.

надеюсь, это поможет, с уважением

...