C++ 尽管对话框未聚焦,但仍会发出信号

C++ 尽管对话框未聚焦,但仍会发出信号,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(che

我有一个与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。为什么要处理这个键盘事件?

好吧,我刚想出来。由于这是一个对话框,按ENTER键会自动调用另一个插槽。此插槽还调用checkPasswords,因此创建了第二个消息框,在第一个消息框关闭后立即显示。

消息框的父项是什么?我创建了。没有什么变化。我还试图设置mb.setWindowModalityQt::ApplicationModel,但没有成功。我刚刚找到了答案。由于这是一个对话框,按ENTER键会自动调用另一个插槽。此插槽还调用checkPasswords,因此创建了第二个消息框,在第一个消息框关闭时立即显示。@slosd:如果您已经解决了问题,您应该将其作为自我回答提交,这样问题就不会看起来没有答案: