我有一个包含QML项目布局的QML文件,现在我希望其中一个项目是QGLWidget。例如,我想渲染到一个特定的QML项目。
有人知道怎么做吗?
我认为最简单的方法是为QML提供一个用c++实现的新的自定义组件。我找不到准备好的东西。
你可以子类化QDeclarativeItem并在使用QPainter::beginNative()函数后在paint函数中实现你的OpenGL代码。之后,您可以通过这种方式将新的自定义项"导出"到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。