#c #qt #qt4
#c #qt #qt4
Вопрос:
У меня есть диалоговое окно с элементами lineEdit. Я хочу, чтобы диалоговое окно закрывалось при нажатии ENTER, поэтому я добавил слот для сигнала returnPressed ():
ChPasswd::ChPasswd(QWidget *parent) :
QDialog(parent),
ui(new Ui::ChPasswd)
{
ui->setupUi(this);
connect(ui->NewPasswordInput, SIGNAL(returnPressed()), SLOT(checkPasswords()));
}
В какой-то момент я открываю окно сообщения:
QMessageBox mb(...);
mb.exec();
Окно открывается и получает фокус. Проблема в том, что когда я сейчас нажимаю ENTER, в ChPasswd
срабатывает сигнал returnPressed и checkPasswords()
вызывается. Почему обрабатывается это событие клавиатуры?
Комментарии:
1. Что является родительским окном сообщения?
2. Я сделал. Ничего не изменилось. Я также безуспешно пытался установить
mb.setWindowModality(Qt::ApplicationModal)
3. Хорошо, я только что понял это. Поскольку это диалоговое окно, нажатие ENTER автоматически вызывает другой слот. Этот слот также вызывает
checkPasswords()
и для этого создано второе окно сообщения, которое появляется, как только первое было закрыто.4. @slosd: Если вы решили свою проблему, вам следует отправить ее в качестве самостоятельного ответа, чтобы вопрос не остался без ответа 🙂
Ответ №1:
Хорошо, я только что понял это. Поскольку это диалоговое окно, нажатие ENTER автоматически вызывает другой слот. Этот слот также вызывает checkPasswords()
и для этого создано второе окно сообщения, которое появляется, как только первое было закрыто.