8

我有一个库证明我是一个 QGLWidget,界面只允许我调整大小/设置大小,并控制一些 GL 动画;但是没有 GL 命令暴露在外面,我所做的只是初始化 GLWidget,然后将上下文传递给库,然后调用交换缓冲区来显示动画..

我想将此 QGLWidget 库集成到 QML 中,是否可以在 QML 中放置一个 QGLWidget ?如果是的话怎么办?

4

2 回答 2

4

完全有可能!您可以编写一个 QML 插件,该插件将定义一个新的 QML 元素来封装库。

然后,您将import使用 QML 文档中的这个插件,并且可以很好地使用新元素并利用库提供的功能。

提示:如果加载 QML 文档的应用程序设置为在 QGLWidget 上,那么您不需要在插件中创建新的 QGLWidget。我曾经犯过这个错误

这篇博文展示了如何从头开始创建一个简单/新的 QML 元素,以及如何在 QML 文档中使用它。

于 2012-02-26T03:01:28.340 回答
2

QGLWidget 派生自 QWidget,而 QML 小部件实现为派生自 QGraphicsObject 的 QDeclarativeItem,这两个是不同的世界。

在 QML 项目中进行 OpenGL 绘图的可能方法是声明一个新的 QDeclarativeItem,将其公开给 QML 系统,然后重写此 QDeclarativeItem 子类的绘图方法以进行本机绘图(通过调用提供的 QPainter 实例的 beginNativePainting 和 endNativePainting绘制方法)。

看看这两个链接: http: //doc.qt.nokia.com/4.7-snapshot/qml-extending.html http://developer.qt.nokia.com/forums/viewthread/4109

于 2012-02-23T13:41:49.027 回答