des composants : dans ce cas, le code QML ne peut pas s'exécuter correctement tant
que les opérations correspondantes n'ont pas été effectuées (son exécution afficherait
une panoplie de messages d'erreur pas toujours compréhensibles). En d'autres termes,
donner le nom du fichier QML à charger au constructeur de QQmlApplicationEngine
n'a pas de sens. La méthode load() est alors utile : elle permet, après avoir créé
l'instance du moteur d'exécution, de charger le code QML à lancer.
app = QApplication(sys.argv)
engine = QQmlApplicationEngine()
engine.quit.connect(app.quit)
engine.load("main.qml")
sys.exit(app.exec_())
Intégrer une partie Qt Quick dans une application Qt Widgets
Pour migrer des applications imposantes de Qt Widgets vers Qt Quick, il est
courant de procéder de manière progressive, en mélangeant les deux : on commence
par passer en Qt Quick des fonctionnalités assez spécifiques (un composant dans
l'interface), puis petit à petit le reste de l'interface, jusqu'à la fenêtre principale.
Ainsi, à tout instant, l'interface complète reste utilisable par l'utilisateur : la
migration peut s'étaler sur plusieurs années, au fil de l'eau ; toute l'application ne
doit pas être réécrite d'une traite.
Selon le type d'application, une réécriture avec Qt Quick n'est pas envisageable ;
par contre, les besoins de l'application sont tels que les utilisateurs sont rapidement
amenés à écrire leurs petites modifications dans le code, qui peuvent alors se faire
à l'aide de Qt Quick : elles seront intégrées à l'interface globale de la même
manière.
Cette intégration est facilitée par la classe QQuickWidget. Son but est d'intégrer une
vue Qt Quick dans une interface à base de widgets (avec, toutefois, un surcoût en
termes de performance).
w = QQuickWidget()
w.setSource(QUrl.fromLocalFile("Component.qml"))
w.show()
Note > Cette classe QQuickWidget ne peut pas être utilisée pour créer des
fenêtres : autrement dit, le fichier QML chargé ne peut pas utiliser un composant
Qt Quick comme Window ou MainWindow. À part ce point, n'importe quelle scène
Qt Quick peut être intégrée dans une application à base de widgets. À ce titre,
QQuickWidget est l'exact inverse de QQmlApplicationEngine.
380
Précédent

- 381/494

Suivant