0

我的实现基于这个示例。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

4

1 回答 1

1

在 QGraphicsProxyWidget *QGraphicsScene::addWidget(QWidget *widget, Qt::WindowFlags wFlags = Qt::WindowFlags()) 的文档中

请注意,不支持具有 Qt::WA_PaintOnScreen 小部件属性集的小部件和包装外部应用程序或控制器的小部件。例如 QGLWidget 和 QAxWidget。

我觉得你运气不好。可能是 QOpenGLWidget 诞生时文档从未被改编过。

Jira 上还有一些错误报告,看起来与您的情况非常相似: https ://bugreports.qt.io/browse/QTBUG-44063

如果我是你,我肯定会在兴趣邮件列表上询问,这就是 Qt 开发人员经常来的地方。

于 2019-08-21T06:52:59.970 回答