Qt 如何在QGraphicsView中为QOpenGLWidget启用抗锯齿?

Qt 如何在QGraphicsView中为QOpenGLWidget启用抗锯齿?,qt,qgraphicsview,qt5.4,Qt,Qgraphicsview,Qt5.4,我已通过QGraphicsProxyWidget将QOpenGLWidget添加到QGraphicsView(不使用setviewport): QSurfaceFormat format= QSurfaceFormat(); format->setSamples(4); //<== widget show black screen if samples =4, 1 is ok but not antialiasing m_glWidget->setFormat(format);

我已通过QGraphicsProxyWidget将QOpenGLWidget添加到QGraphicsView(不使用setviewport):

QSurfaceFormat format= QSurfaceFormat();
format->setSamples(4); //<== widget show black screen if samples =4, 1 is ok but not antialiasing
m_glWidget->setFormat(format);

MyGraphicsProxyWidget* proxy= new MyGraphicsProxyWidget();
proxy->setWidget(m_glWidget);
//add to scene
scene->addItem(proxy);
QSurfaceFormat=QSurfaceFormat();
格式->设置样本(4)//setFormat(格式);
MyGraphicsProxyWidget*代理=新的MyGraphicsProxyWidget();
代理->setWidget(m_glWidget);
//添加到场景中
场景->添加项(代理);
我尝试了一些方法,但没有成功: 如果samples=4,但samples=1,则glwidget显示黑屏是正常的,但不是抗锯齿。 那么,如何在QGraphicsView中为QOpenGLWidget(由GraphicsproxyWidget添加)启用抗锯齿


有什么帮助吗?谢谢

在QApplicationInitialization下将beyond代码附加到main.cpp中

QSurfaceFormat fmt;
fmt.setSamples(10); 
QSurfaceFormat::setDefaultFormat(fmt);

您是否尝试过查看。SetRenderInts(QPaint::Antialiasing)?是的,我以前尝试过(glwidget和graphicsview中的painter),但没有尝试过抗锯齿(但仍然是glwidget,如果添加到QMainwindow并设置samples=4,它工作得很好),请注意,在显示小部件或其父级之前需要这样做:例如,对于QOpenGLWidget,initializeGL是在主app.exec()循环中调用的,太晚了。在我的例子中,我是在小部件构造函数中调用的。可能需要显式调用
glEnable(GL_MULTISAMPLE)在每个图形之前。我没有这样做就尝试了一些问题。