虽然对话没有聚焦,但信号开火

Signal fires although dialog not focused

本文关键字:信号 开火 聚焦 对话      更新时间:2023-10-16

我有一个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(),因此创建了第二个消息框,该消息框在第一个消息框关闭后立即出现。