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