Qt显示/隐藏小工具不平滑

时间:2017-09-11 14:10:17

标签: c++ qt

我遇到了以下问题:

当我双击其中一个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的过程中,我得到了这个效果:

enter image description here

它最终会调整到正常大小,但我总是得到这种丑陋的转变。

更多信息: 我将QGLWidget子类化为创建我自己的QGLWidget,以便我可以将每个QGLWidget上下文移动到一个线程以快速渲染。

enter image description here

1 个答案:

答案 0 :(得分:0)

经过多次反复试验,我将QGLWidget更改为QOpenGLWidget,这种丑陋的效果消失了。我的Qt版本是5.8-msvc2015。只有在使用QGLWidget时才会出现此问题。