我的实现基于这个示例。https://doc.qt.io/qt-5/qtopengl-2dpainting-example.html
该示例所做的是渲染/动画 2 个图像。一个使用原生 qt 功能渲染,另一个使用 OpenGL 渲染。这里的所有都是它的。正在绘制的图像完全相同。
该示例工作正常。我可以看到两个图像都有动画。然后,当我尝试通过在 QGraphicsScene 中添加一个 Window 类(包含 QOpenGLWidget)来进行更改时;QOpenGLWidget 停止自我更新。
原始 main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSurfaceFormat fmt;
fmt.setSamples(4);
QSurfaceFormat::setDefaultFormat(fmt);
Window window;
window.show();
return app.exec();
}
更改了 main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QSurfaceFormat fmt;
fmt.setSamples(4);
QSurfaceFormat::setDefaultFormat(fmt);
Window window;
//window.show();
QGraphicsScene scene;
scene.addWidget(&window);
scene.addText("Hello");
QGraphicsView view(&scene);
view.show();
return app.exec();
}
这是输出。
完整的源代码可在此处获得。 https://github.com/syaifulnizamyahya/QT2dpainting