我创建了一个继承自 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);
}
有没有更好的办法?