qt 弹出QMenu的时候会窗口会闪一下 设置弹出窗口和非模态方式 都没有效果
时间: 2023-11-27 15:50:55 浏览: 217
Qt窗口闪烁
5星 · 资源好评率100%
这种情况可能是由于QMenu的弹出方式导致的。QMenu的弹出方式分为两种:模态和非模态。如果使用模态弹出方式,那么QMenu会阻塞当前线程,并且在弹出的时候会覆盖掉其他窗口,这样就会出现窗口闪烁的情况。如果你使用非模态方式,QMenu弹出的时候不会阻塞当前线程,并且不会覆盖其他窗口,这样就可以避免窗口闪烁的问题。
你可以使用QMenu的exec()函数来设置非模态方式弹出QMenu,而不是使用popup()函数。代码示例如下:
```cpp
QMenu menu;
menu.addAction("Action 1");
menu.addAction("Action 2");
menu.exec(QCursor::pos()); // 非模态方式弹出
```
另外,如果你还是无法解决窗口闪烁的问题,可以尝试在弹出QMenu之前将当前窗口隐藏,弹出QMenu之后再将当前窗口显示出来。这样可以避免QMenu弹出的时候覆盖掉当前窗口,从而避免窗口闪烁的问题。
阅读全文