qt opengl 绘制的时候弹出qmenu会闪一下屏幕
时间: 2023-07-12 22:04:44 浏览: 583
这个问题可能是因为弹出QMenu的时候重绘了整个OpenGL视图窗口导致的。你可以尝试在绘制OpenGL场景之前,先将QMenu设置为隐藏状态,待QMenu弹出结束后再将其设置为可见状态,这样就可以避免闪烁问题。
具体实现方法如下:
1. 在OpenGL视图类的构造函数中创建QMenu,并将其设置为隐藏状态。
```cpp
m_menu = new QMenu(this);
m_menu->hide();
```
2. 重写OpenGL视图类的contextMenuEvent()方法,在该方法中弹出QMenu并设置为可见状态。
```cpp
void MyOpenGLWidget::contextMenuEvent(QContextMenuEvent* event)
{
// 弹出QMenu
m_menu->exec(event->globalPos());
// 设置QMenu为可见状态
m_menu->show();
}
```
3. 在OpenGL视图类的paintGL()方法中,首先将QMenu设置为隐藏状态,然后绘制OpenGL场景。
```cpp
void MyOpenGLWidget::paintGL()
{
// 隐藏QMenu
m_menu->hide();
// 绘制OpenGL场景
// ...
}
```
这样做可以避免QMenu弹出时重绘OpenGL场景,从而避免闪烁问题。
阅读全文