QMessageBox::question导致屏闪
时间: 2023-07-02 19:14:56 浏览: 130
`QMessageBox::question`导致屏幕闪烁的原因可能是计算机的图形渲染速度较慢,或者在显示`QMessageBox`时发生了一些问题。以下是一些可能的解决方法:
1. 尝试重新安装计算机的图形驱动程序。这有时可以改善计算机的图形渲染速度。
2. 在显示`QMessageBox`之前,尝试最小化其他正在运行的程序。这将减少计算机的负载,从而使计算机更快地渲染`QMessageBox`。
3. 尝试使用`Qt::WA_ShowWithoutActivating`属性,这将使`QMessageBox`显示而不会激活窗口。这可以防止闪烁问题。
```cpp
QMessageBox msgBox;
msgBox.setWindowFlags(Qt::WindowStaysOnTopHint | Qt::FramelessWindowHint);
msgBox.setAttribute(Qt::WA_ShowWithoutActivating);
```
4. 尝试使用`QDialog`代替`QMessageBox`,并将其设置为模态对话框,以便它不会在后台闪烁。
```cpp
QDialog dialog;
dialog.setModal(true);
dialog.setWindowTitle("Question");
QLabel label("Are you sure you want to quit?");
QVBoxLayout layout(&dialog);
layout.addWidget(&label);
QDialogButtonBox buttonBox(QDialogButtonBox::Yes | QDialogButtonBox::No,
Qt::Horizontal, &dialog);
layout.addWidget(&buttonBox);
QObject::connect(&buttonBox, &QDialogButtonBox::accepted, &dialog, &QDialog::accept);
QObject::connect(&buttonBox, &QDialogButtonBox::rejected, &dialog, &QDialog::reject);
dialog.show();
```
以上是几种可能解决`QMessageBox::question`导致屏幕闪烁的方法,你可以根据具体情况选择适合自己的解决方案。
阅读全文