使用QDialogBu​​ttonBox确定QDialog的默认返回DialogCode

时间:2013-10-03 19:24:40

标签: qt timer countdown countdowntimer qdialog

我创建了一个继承自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);
}

有更好的方法吗?

0 个答案:

没有答案