2012-02-11 12 views
8

Ho una libreria che mi fornisce un QGLWidget e l'interfaccia mi consente solo di ridimensionare/impostare le dimensioni e controllare alcune animazioni GL; ma nessun comando GL viene esposto all'esterno, tutto lo faccio inizializzare GLWidget e quindi passare il contesto alla libreria e successivamente chiamare il buffer di swap per mostrare l'animazione ..Hosting QOpenGL all'interno di QML

Voglio integrare questa libreria QGLWidget in QML, è possibile hove un QGLWidget all'interno di QML? se sì come?

risposta

3

E 'del tutto possibile! È possibile write a QML plugin che sarà define a new QML element per incapsulare la libreria.

Quindi sarà il import questo plug-in dal documento QML e sarà utile utilizzare il nuovo elemento e sfruttare le funzionalità offerte dalla libreria.

Suggerimento: se l'applicazione che carica il documento QML è stata configurata per averla su QGLWidget, non sarà necessario creare un nuovo QGLWidget all'interno del plug-in. I did this mistake once.

This blog post mostra come creare un elemento QML semplice/nuovo da zero e come utilizzarlo in un documento QML.

+0

Ciao Karl, grazie per il suggerimento, lasciatemi provare oggi ... :) –

+3

Chi ha svalutato, spiega perché. – karlphillip

+0

i primi 2 collegamenti non funzionano più – wotanii

2

QGLWidget deriva da QWidget mentre i widget QML sono implementati come QDeclarativeItem che deriva da QGraphicsObject e questi due sono in mondi diversi.

possibile modo di fare disegni OpenGL in un elemento QML è dichiarare un nuovo QDeclarativeItem, esporlo al sistema QML e quindi eseguire l'override del metodo draw di questo QDeclarativeItem sottoclasse di fare pittura nativo (chiamando il beginNativePainting e endNativePainting del Istanza di QPainter fornita nel metodo di disegno).

Avere uno sguardo a questi due link: http://doc.qt.nokia.com/4.7-snapshot/qml-extending.html http://developer.qt.nokia.com/forums/viewthread/4109