Целью является создание видеопроигрывателя с графическим интерфейсом. GUI является драйвером QML, декодированные видеофрагменты поступают из внешней (не C++) библиотеки.draw QImage in QQuickWindow :: beforeRendering
У меня запущен скрипт QML (QQmlApplicationEngine). QQmlApplicationEngine :: rootObjects возвращает список объектов, первый из которых передается QQuickWindow, а слот подключен к сигналу QQuickWindow :: beforeRendering(). Он работает так, как ожидалось.
Я могу создать QImage из необработанного пиксельного буфера, возвращаемого библиотекой видеодекодера. Как-то я хотел бы сделать этот QImage видимым в обработчике сигнала QQuickWindow :: beforeRendering(). Если мое предположение верно, тогда содержимое QML будет окрашено впоследствии, так что я получаю видеоплеер с графическим интерфейсом.
Мои вопросы:
- как я могу рисовать QImage в слоте beforeRendering?
- согласно моим наблюдениям QQuickWindow :: beforeRendering() испускается только тогда, когда что-то на сцене QML изменяется (время на повторную визуализацию). Могу ли я каким-то образом заставить QQuickWindow/QQmlApplicationEngine повторно отобразить сцену? Это необходимо в тех случаях, когда графический интерфейс не изменяется, но новый декодируется видеокадр доступен и должен быть показан ...
(я новичок в Qt)
Благодарности
Берут посмотрите [этот учебник] (http://doc.qt.io/qt-5/qtquick-scenegraph-openglunderqml-example.html) для 'beforeRendering()' использование. – BaCaRoZzo
Я знал этот урок; это сложнее, чем мне нужно. Я бы хотел избежать программирования OpenGL (если возможно). Я думаю, что это своего рода переполнение, чтобы играть с OpenGL просто для отображения простого растрового изображения ... – tselmeci
Возможно, QPainter может быть использован для этой цели ... Я еще не изучил. – tselmeci