Рендеринг OpenGL в элемент QML

У меня есть файл QML, который содержит макет элементов QML, и теперь я хочу, чтобы один из этих элементов был QGLWidget. т. е. я хочу отобразить определенный элемент QML.

Кто-нибудь знает, как это сделать?


person blueskin    schedule 14.10.2011    source источник


Ответы (1)


Я полагаю, что самый простой способ предоставить QML новый пользовательский компонент, реализованный на C++. Я не нашел ничего готового.

Вы можете создать подкласс QDeclarativeItem и реализовать свой код OpenGL в функции рисования после использования QPainter: :beginNative(). После этого вы можете «экспортировать» свой новый пользовательский элемент в QML вот сюда. Это довольно просто и должно работать, но вам нужно будет настроить область просмотра вашего QDeclarativeView как QGLWidget, что-то вроде этого:

QDeclarativeView view;
// This is needed because OpenGL viewport doesn't support partial updates.
view.setViewportUpdateMode(QGraphicsView::FullViewportUpdateMode);
view.setViewport(new QGLWidget);

или вам придется использовать графическую систему opengl для всего приложения. Другой способ — использовать QML/3D.

В этой теме вы найдете другую информацию.

person Luca Carlon    schedule 16.10.2011