Hosten von QOpenGL-Widget in QML

8

Ich habe eine Bibliothek, die mir ein QGLWidget beweist, und die Schnittstelle erlaubt mir nur die Größe zu ändern / Größe zu setzen und einige GL-Animationen zu steuern; aber kein GL-Befehl wird außerhalb ausgesetzt, ich initialisiere GLWidget und übergebe dann den Kontext an die Bibliothek und rufe später den swap buffer auf, um die Animation anzuzeigen.

Ich möchte diese QGLWidget-Bibliothek in QML integrieren, ist es möglich, ein QGLWidget innerhalb von QML zu platzieren? wenn ja wie?

    
P M 11.02.2012, 18:32
quelle

2 Antworten

3

Es ist absolut möglich! Sie können ein QML-Plugin schreiben , das Definieren Sie ein neues QML-Element , um die Bibliothek zu kapseln.

Dann werden Sie import dieses Plugin aus dem QML-Dokument und Sie werden gut sein, das neue Element zu verwenden und die Funktionen, die die Bibliothek bietet, zu nutzen.

Tipp : Wenn die Anwendung, die Ihr QML-Dokument lädt, auf QGLWidget eingestellt ist, müssen Sie kein neues QGLWidget in Ihrem Plugin erstellen. Ich habe diesen Fehler einmal gemacht .

Dieser Blogpost zeigt, wie Sie erstellen ein einfaches / neues QML-Element von Grund auf neu und wie man es in einem QML-Dokument verwendet.

    
karlphillip 26.02.2012, 03:01
quelle
2

QGLWidget leitet sich vom QWidget ab, während QML-Widgets als QDeclarativeItem implementiert werden, das von QGraphicsObject abgeleitet wird und diese beiden zu verschiedenen Welten gehören.

Eine Möglichkeit, OpenGL-Zeichnungen in einem QML-Objekt zu erstellen, besteht darin, ein neues QDeclarativeItem zu deklarieren, es dem QML-System zur Verfügung zu stellen und dann die Zeichnungsmethode dieser Unterklasse QDeclarativeItem zu überschreiben, um natives Malen durchzuführen (durch Aufruf von beginNativePainting und endNativePainting von QPainter) Instanz in der Zeichenmethode bereitgestellt).

Sehen Sie sich diese zwei Links an: Ссылка http://developer.qt.nokia.com/forums/viewthread/4109

    
rgngl 23.02.2012 13:41
quelle

Tags und Links