如何让QDialogButtonBox不关闭其父QDialog?

问题描述 投票:0回答:2

我有一个带有 QDialogButtonBox 小部件的 QDialog,并且我已将按钮框接受的信号连接到我的 QDialog 子类中的插槽,如下所示:

void MyDialog::on_buttonBox_accepted()
{
    QString errorString = this->inputErrorString();
    if (errorString.isEmpty())
    {
        // Do work here
        // code code code...

        this->accept();
    }
    else
    {
        QMessageBox::critical(this, tr("Error"), tr("The following input errors have occurred:") + errorString);
    }
}

但是,显示消息框后对话框关闭;显然按钮框自动将其接受的信号连接到 QDialog 的接受插槽(我想手动调用该插槽)。如何防止这种情况发生,以便我可以采取上述手动方法?

c++ qt dialog
2个回答
14
投票

您可以实现MyDialog::accept()。该功能在QDialog中是虚拟的。


0
投票

我可以通过断开 QDialog 构造函数中默认的 Accepted() 和 Rejected() 信号来实现此目的,而不是重写 MyDialog::accept() ,如下所示:

ui->buttonBox->disconnect(SIGNAL(accepted()), this);
ui->buttonBox->disconnect(SIGNAL(rejected()), this);
© www.soinside.com 2019 - 2024. All rights reserved.