Note : Dans cette réponse, "Qt Widgets" fait référence à une application Qt Widgets, sélectionnable lors de la création d'une nouvelle application Qt.
Cela fait sept ans que la question a été posée pour la première fois... mais voici ma " objectif " deux cents pour neutraliser toute évolution depuis lors.
Une remise à niveau
Langue
Les projets Qt Quick utilisent QML et JavaScript .
Les projets Qt Widgets utilisent du code C++. (PyQt et PySide, les bindings Python pour Qt, utilisent Python).
Performance et codage
En tant que tel, Qt Widgets pourrait être considéré comme étant de bas niveau par rapport à Qt Quick. Mais cela implique qu'à long terme, un projet Qt Widgets fonctionnera plus rapidement et aura de meilleures performances. Le fait d'être de bas niveau peut cependant être une bonne chose, car Qt Widgets est plus exposé à l'API native (la fonction Module QtCore , Feuilles de style Qt etc). Cela dit, il est souvent utilisé pour le développement de postes de travail.
Qt Quick s'adresse davantage au développement mobile (bien qu'il puisse toujours être utilisé dans le développement de bureau). Il offre des fonctions prêtes à l'emploi popups , animations les onglets et les mises en page, flickables , tiroirs et les contrôles habituels, tous omniprésents dans le développement mobile.
Conception de l'interface utilisateur
Tous deux ont ui
qui fonctionnent avec QtDesigner, fournissant une vue de haut niveau pour définir les mises en page et créer des interfaces. (Dans Qt Quick, les extensions sont .ui.qml
. Dans Qt Widgets, ce sont .ui
.) Le site .ui
ne sont ni obligatoires ni nécessaires : vous avez le choix de faire la conception et la mise en page de manière programmatique en utilisant QML/JS ou C++/Python.
Apprendre
Si vous êtes complètement Si vous êtes novice en programmation, je vous suggère de jeter d'abord un coup d'œil à Qt Quick. Personnellement, je pense que Qt Quick a une plus doux La courbe d'apprentissage est plus courte et il est plus facile de travailler avec pour accomplir des myriades de projets. Il s'appelle "Qt Rapidement "pour une bonne raison. (Ne regardez pas de haut Qt Widgets cependant, ils ont quelques modules sympas qui surpassent QtQuick).
Toutefois, si vous avez déjà programmé en C++ ou en Python, je vous suggère de commencer par les widgets Qt, afin de vous familiariser avec leurs fonctionnalités. signaux et mécanisme de créneau et des modules qui pourraient vous intéresser (par exemple sql
, network
, gui
) ainsi que des conceptions de programmation (par exemple programmation de modèles et de vues pour l'affichage des données).
En particulier avec C++, la plupart des bibliothèques non-Qt qui gèrent les événements utilisent while
-boucles, ce n'est pas le cas avec Qt. Ils utilisent signaux et créneaux horaires .
En fin de compte, même si vous utilisez principalement Qt Widgets, vous pourriez avoir envie de regarder Qt Quick car il offre un langage déclaratif de haut niveau pour travailler et vous permet de mettre les choses en place plus rapidement. (Surtout pour le développement mobile).
Qt fournit des exemples en abondance pour les deux Qt Quick y Widget Qt ainsi qu'un forum . Vous ne devriez pas vous soucier d'obtenir de l'aide à long terme. (N'oubliez pas StackOverflow !)
Qt Quick + Qt Widget
Jusqu'à présent, nous les avons traités comme des entités distinctes. Mais il est possible de intégrer QML dans C++ . Cela vous permet de tirer parti de Qt Widget, C++ et d'autres modules. Par exemple, QtQuick fournit un module de type TreeView
mais pas un TreeModel
qui peuvent/doivent être enregistrés dans QML à partir de C++. Il existe souvent un séparation des préoccupations où Qt recommande de séparer les programmes en interface utilisateur et en logique en QML et C++ respectivement.
C'est aussi très pratique, si par exemple, vous avez besoin d'une backend pour les requêtes SQL intenses, les algorithmes ou les requêtes http/xml asynchrones. C'est cool, non ? Une interface QML/JS et un backend C++. Fullstack Qt'er. :-)
(Ce que je n'ai pas essayé, c'est d'avoir un backend Python. Je n'ai pas encore touché à PyQt...)
3 votes
Passez un peu de temps sur le Qt Quick et regardez les exemples. Si c'est ce dont vous avez besoin, utilisez-le. Si ce n'est pas le cas, allez-y pour un projet normal de widget Qt, mais les plateformes mobiles seront peut-être un problème.
0 votes
Lien mis à jour pour le commentaire de Mat doc.qt.io/qt-5/qtquick-index.html