虽然对话没有集中,但信号仍会触发

时间:2011-04-27 15:20:34

标签: 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 个答案:

答案 0 :(得分:0)

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