Qt Quick Beispiele – Einbettung in Widgets
Veranschaulicht die Einbettung eines „ QQuickWindow “ in eine „ QWidget “-Benutzeroberfläche über „ QWidget::createWindowContainer()“.

Dieses Beispiel veranschaulicht einen der Ansätze zum Einfügen von „ Qt Quick “-Inhalten in eine auf „ QWidget “ basierende Anwendung. „ QQuickView “ und seine übergeordnete Klasse „ QQuickWindow “ leiten sich von „ QWindow “ ab. Das bedeutet, dass sie wie jede andere „ QWindow “-Klasse mit „ QWidget::createWindowContainer()“ verwendet werden können.
Ausführen des Beispiels
Sie können das Beispiel wie folgt ausführen:
- Qt Creator
Öffnen Sie den Modus „ Welcome “ und wählen Sie das Beispiel unter „ Examples “ aus. Weitere Informationen finden Sie unter Qt Creator: Tutorial: Erstellen und Ausführen.
- Qt Extension for Visual Studio Code
Führen Sie den Befehl „ Qt: Open Qt examples “ über „ Command Palette “ aus und wählen Sie das Beispiel aus der Liste aus. Weitere Informationen finden Sie unter Qt Extension for Visual Studio Code: Tutorial: Erstellen und Ausführen.
Die interne Einbettung des Fensters führt dazu, dass ein natives untergeordnetes Widget innerhalb der Widget-Hierarchie erstellt wird, und das Fenster (im Beispiel das „ QQuickView “) wird einem neuen übergeordneten Widget zugeordnet. Das Container-Widget sorgt dafür, das untergeordnete Fenster so neu zu positionieren, dass es als Teil der Benutzeroberfläche erscheint, obwohl es sich in Wirklichkeit um ein separates natives Fenster handelt, das unabhängig von seinem übergeordneten, auf „ QWidget “ basierenden Top-Level-Fenster gezeichnet wird.
MainWindow::MainWindow()
: m_quickView(new QQuickView)
{
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout(centralWidget);
m_quickView->setResizeMode(QQuickView::SizeRootObjectToView);
connect(m_quickView, &QQuickView::statusChanged,
this, &MainWindow::quickViewStatusChanged);
connect(m_quickView, &QQuickWindow::sceneGraphError,
this, &MainWindow::sceneGraphError);
m_quickView->loadFromModule("embeddedinwidgets", "Main");
QWidget *container = QWidget::createWindowContainer(m_quickView);
container->setMinimumSize(m_quickView->size());
container->setFocusPolicy(Qt::TabFocus);
layout->addWidget(new QLineEdit(QStringLiteral("A QLineEdit")));
layout->addWidget(container);
layout->addWidget(new QLineEdit(QStringLiteral("A QLineEdit")));
setCentralWidget(centralWidget);
QMenu *fileMenu = menuBar()->addMenu(tr("File"));
fileMenu->addAction(tr("Quit"), qApp, &QCoreApplication::quit);
}Der entscheidende Schritt bei der Initialisierung ist die Erstellung von ` container`, einem ` QWidget `, das das ` QQuickView` umschließt und hostet. Dieses Widget kann dann wie jedes andere ` QWidget` zu einem Layout hinzugefügt werden.
Hinweis: Die Verwendung der nativen Fenstereinbettung ist nur ein möglicher Ansatz, um Benutzeroberflächen von „ QWidget “ und „ Qt Quick “ zu kombinieren. Der andere, häufiger verwendete Ansatz hierfür ist „ QQuickWidget “. Ein Beispiel für die Verwendung von „ QQuickWidget “ finden Sie im Beispiel „Qt Quick Widgets “. Intern gibt es erhebliche Unterschiede hinsichtlich der Darstellung und der Ereignisbehandlung. „ QQuickWidget “ verwendet überhaupt keine nativen Fenster und leitet die Darstellung von „ Qt Quick “ in eine Textur um, die dann über eine 3D-Grafik-API wie OpenGL oder Vulkan mit dem restlichen Inhalt von „ QWidget “ zusammengesetzt wird. Dies bietet mehr Flexibilität, geht jedoch zu Lasten der Leistung. Es funktioniert auch auf Plattformen, auf denen es kein eigentliches Fenstersystem und kein Konzept für native Fenster gibt. Der in diesem Beispiel gezeigte Ansatz der Fenstereinbettung kann zwar leistungsstärker sein, eignet sich jedoch am besten für Benutzeroberflächen, bei denen der Inhalt von Qt Quick einen festen rechteckigen Bereich einnimmt und anschließend nicht in der Größe angepasst, gestapelt oder beschnitten wird.
Siehe auch QWidget::createWindowContainer().
© 2026 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.