如何在Qt中显示带有“是/否”按钮的消息框,以及如何检查按下了哪个按钮?
即一个消息框看起来像这样:
你将为此使用QMessageBox::question
。
假设的小部件插槽中的示例:
#include <QApplication>
#include <QMessageBox>
#include <QDebug>
// ...
void MyWidget::someSlot() {
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "Test", "Quit?",
QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
qDebug() << "Yes was clicked";
QApplication::quit();
} else {
qDebug() << "Yes was *not* clicked";
}
}
应该在Qt 4和5上工作,QT += widgets
在Qt 5和CONFIG += console
Win32上要求查看qDebug()
输出。
请参阅StandardButton
枚举以获取可以使用的按钮列表;有关详细信息,请参见枚举。该函数返回被单击的按钮。你可以使用额外的参数设置默认按钮(如果你未指定或指定,Qt会自动选择一个合适的默认值QMessageBox::NoButton
)。
我有一个关于动态生成消息框的方式的问题:是这样做还是预先定义整个内容(在变量中创建和存储消息框等),然后在需要时简单地调用它会更好?
@rbaleksandar最好使用QMessageBox静态方法。Qt将清除方法返回时使用的所有内存,无需将其中一个永久地保留在内存中。
谢谢,这很有意义。毕竟,UI的这部分内容不是:1)需要大量资源,因此需要花费一些时间来加载,并且2)通常甚至持续在屏幕上供用户查看。
有史以来最好的答案。