Как обновить чертежи OpenGL (QOpenGLWidget) при добавлении в QGraphicsScene?

Я основал свою реализацию на этом образце. https://doc.qt.io/qt-5/qtopengl-2dpainting-example.html

Пример выполняет рендеринг / анимацию 2 изображений. Один выводится с использованием встроенной функциональности qt, а другой - с использованием OpenGL. Вот и все, что нужно сделать. Рисуемое изображение точно такое же.

Образец работает отлично. Я могу видеть оба изображения одушевленными. Затем, когда я пытаюсь внести изменения, добавив класс Window (который содержит QOpenGLWidget) внутри QGraphicsScene; 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

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.

Другие вопросы по тегам