QQuickWidget - QQuickView Vergleichsbeispiel
Demonstriert die Vorteile von QQuickWidget gegenüber einem QQuickView eingebettet als natives Fenster.
Das Beispiel erlaubt es, die gleiche Qt Quick Szene innerhalb der gleichen QWidget-basierten Benutzeroberfläche mit zwei verschiedenen Ansätzen zu zeigen: einer ist die Verwendung eines QQuickView und die Verwendung als Kindfenster und QWidget::createWindowContainer(). Der andere verwendet QQuickWidget, das als echtes QWidget fungiert und unter anderem besseres Clipping und Stacking unterstützt, wie es von einem echten QWidget erwartet wird.
Die Szene Qt Quick verwendet auch direktes OpenGL-Rendering, was beweist, dass das Rendering mit QQuickWidget immer noch über die beschleunigte 3D-API erfolgt. Dies hat zur Folge, dass das Beispiel an OpenGL gebunden ist und mit anderen Grafik-APIs (Vulkan, Metal, Direct 3D) nicht funktionieren wird.
Wenn Sie auf das Kontrollkästchen Überlagerung anzeigen klicken, wird ein Fall von Widget-Stapelung demonstriert, der nicht wie erwartet gerendert wird, wenn ein natives Fenster eingebettet wird, während QQuickWidget dafür sorgt, dass es wie erwartet gerendert wird.
Multisample-Antialiasing kann ebenfalls ausprobiert werden. Wenn es über das entsprechende Kontrollkästchen aktiviert wird, rendert QQuickWidget intern in einen Multisample-Renderbuffer, der dann nach jedem Rendering-Durchgang in eine reguläre 2D-Textur ohne Multisample aufgelöst wird, wodurch Multisampling für den Inhalt von Qt Quick ermöglicht wird, ohne den Rest der Benutzeroberfläche von QWidget zu beeinträchtigen. Mit QQuickView fordert das native Fenster Multisampling für seine entsprechende Fensteroberfläche an, was zu ähnlichen Ergebnissen führt, sofern die Plattform dies unterstützt.
Die Qt Quick Szene ist interaktiv: Das Tippen in das Textfeld ist unabhängig von der verwendeten Einbettungstechnologie möglich. QQuickWidget kümmert sich automatisch um die Weiterleitung von Eingabeereignissen an die darunter liegende Qt Quick Szene.
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.