Qt 使用OpenGL视口在QGraphicsView中动态设置QGraphicscene
我有一个问题,我正在Windows下开发一个图形程序,几乎没有QGraphicscene和一个QGraphicsView,可以在运行时使用大量图形项更改场景,问题是,当我使用Qwidget viewport时,一切正常,但当我切换到OpenGL viewport时,当我更改场景时,前一个场景的内容仍然显示在QGraphicsView上,新场景的内容也会显示 有什么问题?这是改变场景方法的最佳解决方案还是我应该改变方法 下面是设置视图的代码Qt 使用OpenGL视口在QGraphicsView中动态设置QGraphicscene,qt,qgraphicsview,qgraphicsscene,Qt,Qgraphicsview,Qgraphicsscene,我有一个问题,我正在Windows下开发一个图形程序,几乎没有QGraphicscene和一个QGraphicsView,可以在运行时使用大量图形项更改场景,问题是,当我使用Qwidget viewport时,一切正常,但当我切换到OpenGL viewport时,当我更改场景时,前一个场景的内容仍然显示在QGraphicsView上,新场景的内容也会显示 有什么问题?这是改变场景方法的最佳解决方案还是我应该改变方法 下面是设置视图的代码 m_viewPort = new QOpenGL
m_viewPort = new QOpenGLWidget (this);
QSurfaceFormat format;
format.setProfile(QSurfaceFormat::CoreProfile);
format.setDepthBufferSize(24);
format.setStencilBufferSize(8);
format.setSamples(4);
m_viewPort->setFormat(format);
ui->gV->setViewport(m_viewPort);
ui->gV->setViewportUpdateMode(QGraphicsView::FullViewportUpdate);
//ui->gV->setCacheMode(QGraphicsView::CacheBackground);
ui->gV->setRenderHints(QPainter::Antialiasing| QPainter::HighQualityAntialiasing | QPainter::SmoothPixmapTransform| QPainter::TextAntialiasing);
ui->gV->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
ui->gV->setVerticalScrollBarPolicy (Qt::ScrollBarAlwaysOff);
ui->gV->setTransformationAnchor(QGraphicsView::NoAnchor);
ui->gV->setAutoFillBackground(false);
ui->gV->setAttribute(Qt::WA_OpaquePaintEvent, true);
ui->gV->setAttribute(Qt::WA_NoSystemBackground, true);
resize(boardBaseSize);
下面是将新场景设置为视图的代码
void GlScreenBoard::setShowScene(QGraphicsScene *scene, QString programName)
{
scene->setSceneRect(boardSceneRectBase);
ui->gV->setScene(scene);
}
另一个问题是,当我将“图形视图缓存模式”设置为“缓存背景”时,OpenGL视口将禁用!!QGraphicscene中的画家将返回光栅