我遇到了以下问题:
当我双击其中一个QGLWidget
时,我想要做的是将点击的窗口小部件扩展为完整的父窗口小部件大小,如果全尺寸窗口小部件再次被双重修改,它将恢复显示所有小部件,所以代码是这样的:
display_widgets_
存储所有已创建的QGLWidget
s。
bool MainWindow::eventFilter(QObject *watched, QEvent *event)
{
if(event->type() == QEvent::MouseButtonDblClick)
{
QMouseEvent* mouseEv = (QMouseEvent*)event;
if(mouseEv->buttons() == Qt::LeftButton)
{
display_widgets_[0]->parentWidget()->setUpdatesEnabled(false);
if(!showAll_){
for(auto& it:display_widgets_)
{
it->show();
}
showAll_ = true;
}else{
for(auto& it: display_widgets_)
{
if(watched == it)
{
selected_widget_ = it;
showAll_ = false;
selected_widget_->show();
}else
{
it->hide();
}
}
}
display_widgets_[0]->parentWidget()->setUpdatesEnabled(true);
}
return true;
}
return QMainWindow::eventFilter(watched, event);
}
但是,在Double Click
的过程中,我得到了这个效果:
它最终会调整到正常大小,但我总是得到这种丑陋的转变。
更多信息:
我将QGLWidget
子类化为创建我自己的QGLWidget
,以便我可以将每个QGLWidget
上下文移动到一个线程以快速渲染。
答案 0 :(得分:0)
经过多次反复试验,我将QGLWidget
更改为QOpenGLWidget
,这种丑陋的效果消失了。我的Qt版本是5.8-msvc2015。只有在使用QGLWidget
时才会出现此问题。