2012-02-11 12 views
8

Tengo una biblioteca que me demuestra que es QGLWidget, y la interfaz solo me permite ajustar el tamaño/tamaño y controlar algunas animaciones GL; pero no se expone ningún comando GL afuera, todo lo hago inicializo GLWidget, y luego transfiero el contexto a la biblioteca y luego llamo al buffer de intercambio para mostrar la animación ...Alojamiento del widget QOpenGL dentro de QML

Quiero integrar esta biblioteca QGLWidget en QML, ¿es posible ¿Tiene un QGLWidget dentro de QML? Si es así, ¿cómo?

Respuesta

3

Es totalmente posible! Puede write a QML plugin que será define a new QML element para encapsular la biblioteca.

A continuación, va a import este complemento del documento QML y será bueno utilizar el nuevo elemento y aprovechar las características que ofrece la biblioteca.

Sugerencia: si la aplicación que carga su documento QML se configuró para tenerlo en QGLWidget, entonces no necesitará crear un nuevo QGLWidget dentro de su complemento. I did this mistake once.

This blog post muestra cómo crear un elemento QML simple/nuevo desde cero y cómo usarlo en un documento QML.

+0

Hola Karl, gracias por darme una propina, déjame intentarlo hoy ... :) –

+3

Quien haya votado negativamente, explica por qué. – karlphillip

+0

los primeros 2 enlaces ya no funcionan – wotanii

2

QGLWidget deriva de la QWidget mientras los widgets QML se implementan como QDeclarativeItem que se deriva de QGraphicsObject y estos dos son a mundos diferentes.

Posible forma de hacer dibujos OpenGL en un elemento QML es declarar un nuevo QDeclarativeItem, exponerlo al sistema QML y luego anular el método de dibujo de esta subclase QDeclarativeItem para hacer una pintura nativa (llamando a la pintura inicial y la pintura final). Instancia de QPainter proporcionada en el método de dibujo).

Tener un vistazo a estos dos enlaces: http://doc.qt.nokia.com/4.7-snapshot/qml-extending.html http://developer.qt.nokia.com/forums/viewthread/4109

Cuestiones relacionadas