qt showFullScreen()全屏显示模式下,右键弹出menu会闪屏,如何不闪屏 c++
时间: 2024-01-22 07:20:15 浏览: 110
c++网页全屏显示 基于QtWebEngine
5星 · 资源好评率100%
在Qt中,使用showFullScreen()全屏显示模式下,右键弹出menu会闪屏的原因是因为在全屏模式下,右键弹出menu会导致窗口重新绘制。为了避免闪屏,可以通过以下两种方式实现:
方式一:使用QMenu的popup()方法,而不是在窗口上使用exec()方法弹出菜单。这样可以使菜单在自己的窗口中弹出,而不是在主窗口中弹出,从而避免了主窗口的重绘。
方式二:使用Qt::WA_TranslucentBackground属性来设置窗口的透明度。这样可以使窗口在重绘时不会被完全覆盖,从而避免了闪屏。但是这种方法需要考虑到窗口的透明度可能会影响窗口中其他控件的显示效果。
你可以尝试以下代码来实现方式一:
```
void MyWidget::mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::RightButton) {
QMenu menu(this);
menu.addAction("Action 1");
menu.addAction("Action 2");
menu.popup(event->globalPos());
}
}
```
希望能帮助到你。
阅读全文