如何在 Qt 中显示带有“是/否”按钮的消息框,以及如何检查按下了哪些按钮?
即一个看起来像这样的消息框:
原文由 sashoalm 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何在 Qt 中显示带有“是/否”按钮的消息框,以及如何检查按下了哪些按钮?
即一个看起来像这样的消息框:
原文由 sashoalm 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您需要异步调用,您应该使用 open
和 result
方法,而不是 question
或 exec
。 QWidget
方法中的示例代码:
QMessageBox* const message = new QMessageBox(QMessageBox::Icon::Question, tr("Test"),
tr("Quit?"), QMessageBox::Button::Yes | QMessageBox::Button::No, this);
message->setDefaultButton(QMessageBox::Button::No);
message->open();
connect(message, &QDialog::finished, this, [message] {
message->deleteLater();
if (message->result() == QMessageBox::Button::Yes) {
QApplication::quit();
}
});
它不应该只对退出对话框有用,但对于其他确认对话框,其中父小部件可能被外部事件破坏,它是避免崩溃的主要方法。
原文由 Nicolas D. 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2k 阅读✓ 已解决
4 回答4.4k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
为此,您将使用
QMessageBox::question
。假设小部件插槽中的示例:
应该在 Qt 4 和 5 上工作,在 Qt 5 上需要
QT += widgets
CONFIG += console
在 Win32 上需要 — 才能看到qDebug()
输出。请参阅
StandardButton
枚举以获取您可以使用的按钮列表;该函数返回被点击的按钮。您可以使用额外的参数设置默认按钮(如果您不指定或指定QMessageBox::NoButton
,Qt“会 _自动选择合适的默认值_”)。