web-dev-qa-db-fra.com

Qt Designer C ++ ou QML pour GUI

Je sais que l'utilisation de QML est assez nouvelle dans QT et je me demandais si je devrais concevoir mon application en utilisant QTDesigner ou QML. J'utiliserai un modèle MVC et ma principale préoccupation si j'utilise QML pour l'interface graphique est qu'il pourrait ne pas être facile à intégrer dans le reste de mon application C++.

N'hésitez pas à donner vos conseils personnels, je l'apprécierais beaucoup. Merci!

49
clenemt

QML est principalement destiné aux plateformes mobiles. En raison de sa jeunesse et de son souci des conventions d'interface de plate-forme variées, il manque des contrôles standard comme les boutons et les zones de liste déroulante (mais voir le projet Composants ). Si vous êtes sur mobile ou que votre interface utilisateur nécessite un style visuel hautement personnalisé, QML peut-être mérite d'être pris en considération. Soyez prêt pour beaucoup de travail supplémentaire dans la conception de contrôles personnalisés. L'intégration de QML et C++ est encore assez difficile à mon avis. Je recommanderais personnellement d'utiliser QML uniquement pour des applications plus simples, uniquement sur des plates-formes mobiles et uniquement avec JavaScript. Dans les bonnes circonstances, je pourrais envisager d'écrire des éléments QML personnalisés en C++.

L'API C++ de Qt ne disparaîtra pas de sitôt. Il est également conçu en fonction du bureau et répondra mieux aux attentes des utilisateurs sur les plates-formes de bureau. Si vous êtes sur le bureau, je vous recommande de vous en tenir à C++ et Designer. Même après que QML ait mûri un peu, ce ne sera probablement pas le bon solution pour la plupart des applications de bureau.

Mise à jour!

Il semble que les choses soient en train de changer . Je n'ai pas encore essayé les nouveaux composants, et la documentation semble un peu rare (ou du moins, à l'écart), mais cela pourrait éventuellement éliminer la plus grande barrière à l'utilisation de QML sur le bureau. Il reste à voir si cela obtiendra un soutien à long terme, mais si vous êtes prêt à accepter le risque d'être un des premiers à adopter, je pense que QML peut maintenant être un choix viable pour les applications de bureau.

46
Steve S

Il vaudrait la peine d'essayer un peu de QML pour tester s'il convient à vos besoins.

Si vous créez une interface utilisateur hautement personnalisée avec des interfaces et des animations dynamiques, QML convient au travail; si vous construisez une application de bureau traditionnelle, vous voudrez probablement vous en tenir à l'API Qt C++.

En ce qui concerne l'intégration entre QML et C++, QML est conçu pour être facilement intégré au code C++, et de nombreuses applications QML utilisent une sorte de backend C++. Il est simple d'injecter des objets C++ dans une interface QML ou d'écrire des éléments QML personnalisés en C++. Jetez un œil à http://doc.qt.io/archives/qt-4.7/qtbinding.html et http://doc.qt.io/archives/qt-4.7 /qml-extending-tutorial-index.html .

15
blam

Une chose manquée par les réponses ci-dessus est que QML a l'avantage/l'inconvénient supplémentaire de JavaScript pour la logique métier (si nécessaire). Je suis en train de créer une application (petite à moyenne) de taille pour le bureau et en ce moment mes (2) utilisateurs alpha l'apprécient. Je suis impressionné par l'expressivité du framework et la rapidité avec laquelle je peux le monter et le tester. Dans l'ensemble, je trouve qu'il est plus rapide de travailler qu'avec un RAD (concepteur) et j'aime avoir JavaScript comme solution de secours sur mon interface utilisateur lorsque je fais des choses ennuyeuses comme les survols/validation, etc. ..

Je pense que c'est une question de savoir à quel point vous êtes à l'aise avec la langue. Si C++ est votre langage "go to", vous préférerez probablement le concepteur. Si vous venez du Web (confession, je suis un Java ingénieur EE/développeur MVC .NET faisant beaucoup de front-end) vous le trouverez rafraîchissant et rapide.

Il permet également une certaine réactivité que les utilisateurs attendent de nos jours. Dans l'ensemble, je lui donnerais un énorme avantage. Essayez-le - vous serez probablement plutôt content et plutôt ennuyé dans le même laps de temps. Je suis toujours en colère à propos de quelques choses (FileIO en particulier) mais j'ai apprécié le côté GUI des choses d'une manière que je fais rarement sur le bureau.

13
Daniel B. Chapman