QMessageBox::question 显示的时候如何减少重绘过程
时间: 2023-09-11 10:10:50 浏览: 142
在显示 QMessageBox::question 对话框时,可以通过设置 QWidget::setAttribute(Qt::WA_DontShowOnScreen) 属性来减少重绘过程。这个属性告诉 Qt 框架不将对话框显示在屏幕上,直到您显式调用 QWidget::show() 方法来显示它。
下面是一个示例代码片段,演示如何设置 QWidget::setAttribute(Qt::WA_DontShowOnScreen) 属性来减少 QMessageBox::question 对话框的重绘过程:
```cpp
// 设置不显示在屏幕上
QMessageBox::StandardButton reply;
QMessageBox msgBox(QMessageBox::Question, "Question", "Do you want to proceed?",
QMessageBox::Yes|QMessageBox::No, this, Qt::Dialog | Qt::FramelessWindowHint);
msgBox.setAttribute(Qt::WA_DontShowOnScreen);
reply = msgBox.exec();
// 显示对话框并将其移动到指定位置
QWidget* widget = msgBox.parentWidget();
widget->move(100, 100);
widget->show();
```
这样做的好处是可以减少对话框的重绘次数,提高应用程序的性能和响应速度。但是需要注意,由于对话框没有实际显示在屏幕上,可能需要手动调整它的位置和大小。
阅读全文