1

我创建了一个继承自 QDialog 的自定义对话框类。我允许用户调用exec(timeoutMs),以便对话框在超时后自动关闭。我希望对话框完成而不是关闭(没有完成)。换句话说,如果超时到期,我希望对话框返回,就好像默认按钮被按下一样。有没有确定默认按钮及其在 QDialog 中的作用的好方法?这就是我现在所拥有的:

void MyDialog::timeout()
{
    int result = QDialog::Rejected;
    foreach (QAbstractButton *btn, buttonBox()->buttons()) {
        QPushButton *pbtn = qobject_cast<QPushButton *>(btn);
        if (pbtn
                && pbtn->isDefault()
                && buttonBox()->buttonRole(btn) == QDialogButtonBox::AcceptRole)
            result = QDialog::Accepted;
    }
    done(result);
}

有没有更好的办法?

4

0 回答 0