【问题标题】:Hosting QOpenGL widget inside QML在 QML 中托管 QOpenGL 小部件
【发布时间】:2012-02-11 18:32:05
【问题描述】:

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

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

【问题讨论】:

    标签: opengl qt4 qml qglwidget


    【解决方案1】:

    完全有可能!您可以write a QML plugindefine a new QML element 封装库。

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

    提示:如果加载 QML 文档的应用程序设置为在 QGLWidget 上,那么您无需在插件中创建新的 QGLWidget。 I did this mistake once.

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

    【讨论】:

    • 嗨,Karl,感谢您的提示,今天让我尝试一下... :)
    • 谢谢,已修复。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多