qt 全屏状态下,qmenu在第一块屏幕上全屏会闪屏,在第二块不会
时间: 2023-12-03 07:44:24 浏览: 27
这个问题可能是由于 Qt 库在不同屏幕上处理全屏模式时的不同行为所致。为了解决这个问题,你可以尝试以下几种方法:
1. 使用 `QMenu::popup()` 方法代替 `QMenu::exec()` 方法来显示菜单。这个方法会在给定的位置显示菜单,而不会使其全屏。
2. 在 `QMenu` 显示之前,将其设置为非全屏模式。你可以使用 `QWidget::setWindowState()` 方法来设置窗口状态。例如:
```
myMenu->setWindowState(Qt::WindowNoState);
myMenu->exec();
```
3. 在 `QMenu` 显示之前,将其移动到主屏幕上显示。你可以使用 `QScreen::availableGeometry()` 方法来获取主屏幕的几何信息,并使用 `QWidget::move()` 方法将菜单移动到主屏幕上。例如:
```
QRect primaryScreenGeometry = QApplication::primaryScreen()->availableGeometry();
QPoint menuPos = ...; // 获取菜单应该显示的位置
if (!primaryScreenGeometry.contains(menuPos)) {
menuPos.setX(primaryScreenGeometry.x() + primaryScreenGeometry.width() / 2);
menuPos.setY(primaryScreenGeometry.y() + primaryScreenGeometry.height() / 2);
}
myMenu->move(menuPos);
myMenu->exec();
```
希望这些方法能够帮助你解决问题。