QT中如何获取QMessageBox::question对话框用户选择的确定还是取消
时间: 2024-05-03 13:17:08 浏览: 15
在Qt中,可以使用QMessageBox::question方法来创建一个询问对话框,该对话框包含“确定”和“取消”按钮。要获取用户的选择,可以根据QMessageBox::question方法的返回值来判断用户选择了哪个按钮。
当用户点击“确定”按钮时,QMessageBox::question方法将返回QMessageBox::Yes,当用户点击“取消”按钮时,QMessageBox::question方法将返回QMessageBox::No。因此,您可以通过检查QMessageBox::question方法的返回值来确定用户选择了哪个按钮。
以下是一个示例代码:
```cpp
QMessageBox::StandardButton reply;
reply = QMessageBox::question(this, "Title", "Message", QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
// 用户选择了“确定”按钮
} else {
// 用户选择了“取消”按钮
}
```
在上面的示例中,我们首先使用QMessageBox::question方法创建一个询问对话框,然后将返回值存储在reply变量中。接下来,我们检查reply变量的值,以确定用户选择了哪个按钮。
相关问题
QMessageBox::question 调用的时候设置模态对话框,防止视频窗口闪动
当你调用`QMessageBox::question`时,可以将其设置为模态对话框,以确保它会阻塞程序的执行,并且不会抢占其他窗口的焦点,从而防止视频窗口闪动。
示例代码如下:
```cpp
QMessageBox msgBox;
msgBox.setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
msgBox.setText("Are you sure you want to quit?");
msgBox.setStandardButtons(QMessageBox::Yes | QMessageBox::No);
msgBox.setDefaultButton(QMessageBox::No);
msgBox.setParent(videoWidget);
msgBox.setModal(true);
msgBox.show();
```
在上面的代码中,首先创建了一个`QMessageBox`对象`msgBox`,然后设置了它的一些属性:将其设置为窗口置顶,去掉窗口边框,设置提示信息和按钮等。接着将其父窗口设置为视频窗口`videoWidget`,并将其设置为模态对话框,最后显示该对话框。
通过将`QMessageBox`设置为模态对话框,可以确保它不会抢占其他窗口的焦点,从而防止视频窗口闪动。
QMessageBox::question
这是一个Qt框架提供的对话框类,用于显示一个简单的问题对话框,并接收用户的选择。它通常用于询问用户是否同意或拒绝某个操作。
使用该类创建一个question对话框的示例代码如下:
```cpp
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QMessageBox::StandardButton reply;
reply = QMessageBox::question(nullptr, "Question", "Do you want to proceed?", QMessageBox::Yes|QMessageBox::No);
if (reply == QMessageBox::Yes) {
// 用户选择了"Yes"
// 执行相应的操作
} else {
// 用户选择了"No"或者关闭了对话框
// 执行相应的操作
}
return app.exec();
}
```
在上述示例中,我们创建了一个简单的question对话框,显示一个问题"Do you want to proceed?",并提供"Yes"和"No"两个选项。用户选择了对应的选项后,程序可以根据选择执行相应的操作。