Qt Quick Exemples - Intégration dans des widgets
Démonstration de l'intégration d'une page QQuickWindow dans une interface utilisateur QWidget via QWidget::createWindowContainer().

Cet exemple illustre l'une des approches permettant d'ajouter du contenu Qt Quick dans une application basée sur QWidget. QQuickView La classe QWindow et sa classe parente QQuickWindow dérivent de , ce qui signifie qu'elles peuvent être utilisées avec QWidget::createWindowContainer(), comme n'importe quelle autre QWindow.
Exécution de l'exemple
Pour exécuter l'exemple à partir de Qt Creator, ouvrez le mode Welcome et sélectionnez l'exemple à partir de Examples. Pour plus d'informations, voir Qt Creator: Tutoriel : Construire et exécuter.
L'intégration interne de la fenêtre entraîne la création d'un widget enfant natif dans la hiérarchie des widgets, et la fenêtre ( QQuickView dans l'exemple) est réorientée. Le widget conteneur se charge de repositionner la fenêtre enfant pour qu'elle semble faire partie de l'interface utilisateur, même si en réalité il s'agit d'une fenêtre native distincte qui peint indépendamment de son parent, la fenêtre de premier niveau basée sur QWidget.
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); }
L'étape clé de l'initialisation est la création de container, un QWidget qui enveloppe et héberge le QQuickView. Ce widget peut ensuite être ajouté à une présentation comme n'importe quel autre QWidget.
Remarque : l'utilisation de l'intégration de fenêtres natives n'est qu'une approche possible pour combiner les interfaces utilisateur QWidget et Qt Quick. L'autre approche, plus couramment utilisée, est QQuickWidget. Voir l'exemple deQt Quick Widgets pour un exemple d'utilisation de QQuickWidget. Il existe des différences internes significatives en ce qui concerne le rendu et la gestion des événements. QQuickWidget n'utilise pas du tout les fenêtres natives et redirige le rendu de Qt Quick dans une texture qui est ensuite composée avec le reste du contenu de QWidget par le biais d'une API graphique 3D telle que OpenGL ou Vulkan. Cela apporte plus de flexibilité, au détriment des performances. Elle fonctionne également sur des plateformes où il n'y a pas de système de fenêtrage réel ni de concept de fenêtres natives. L'approche d'intégration de fenêtres démontrée dans cet exemple peut être plus performante, mais elle convient mieux aux interfaces utilisateur où le contenu de Qt Quick occupe une zone rectangulaire fixe et n'est pas redimensionné, empilé ou découpé par la suite.
Voir aussi 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.