8
votes

GTK + VS QT Language

Mettre sous peu: Pour ceux qui sont familiarisés avec des liaisons de langue dans qt et gtk +. Par exemple. python et rubis. Existe-t-il une différence de qualité ou de capacité?

Plus d'arrière-plan: je connais très bien C ++ et QT très bien. Expérience minimale avec GTK +. Je sais que C ++ n'est pas idéal pour les liaisons de langue en raison de l'absence d'une ABI bien définie (interface binaire d'application). J'ai également lu que GTK + a été conçu pour être lié à d'autres langues. Donc, je me demande comment cela se manifeste dans la pratique. Les liaisons GTK + sont-elles mieux maintenues ou fonctionnent mieux d'une manière ou d'une autre que leurs homologues Qt?

Je suis actuellement très intéressé par la langue GO, et ils ont commencé à développer des liaisons GTK +. Cependant, la liaison C ++ est loin. Cela me fait me demander si l'apprentissage de GTK + en vaut la peine.


2 commentaires

Qu'en est-il de Vala [ Live.gnome.org/vala] ? c'est une grande nouvelle langue (beaucoup mieux que c ++). C'est comme C # mais produit du code natif et il est spécialement pour le développement GTK +.


J'y ai pensé mais mon principal intérêt était en cours. Avoir un moyen de coder Guis était une deuxième préoccupation. Vala semble très c # / java comme. J'aurais préféré une approche plus fraîche similaire à celle de GOBJECT.


5 Réponses :


0
votes

Il y a des fixations C ++ GTK +. Google pour GTKMM.


1 commentaires

Je connais. Je ne demande pas si elles existent. Mais à propos de leur qualité



1
votes

J'ai travaillé avec Pyqt et Pygtk et je dirais qu'ils sont régulièrement manipulés et synchronisés avec leurs cadres parents. Cependant, et cela est complètement subjectif, j'ai trouvé plus gratifiant de travailler avec Pygtk qu'avec Pyqt, même si je n'avais pas écrit auparavant aucun code à l'aide de GTK. Si vous savez bien qt, allez-y avec qt.


0 commentaires

2
votes

Je pense que les liaisons GTK sont plus anciennes que les qt (et donc un peu plus matures), mais elles sont à la fois utilisables et que vos connaissances précédentes de QT devraient être le facteur principal de votre choix.

J'ai développé de petites gites en utilisant à la fois qt et gtk avec leurs liaisons de python et trouvé les deux équivalents. Certains regrets bien que sur les liaisons PYQT avec conteneur QT (QVector, ...) qui ne sont pas traduites dans une structure de données Python régulière et ajoute ainsi un peu de complexité au code. Je n'ai pas rappelé les mêmes problèmes à l'aide de Pygtk.


1 commentaires

Qvariant et d'autres bruits ne sont pas nécessaires, si vous utilisez Pyqt avec Python3



10
votes

J'ai utilisé GTK et QT en C ++ et également pygtk et pyqt à Python assez largement.

Qt bat les mains GTK Down - c'est une API beaucoup plus flexible, moderne et propre. GTK manque également de certaines fonctionnalités qui sont importantes pour moi. D'un point de vue du cadre, je recommanderais qt.

Quant aux liaisons de Langauge (je ne peux parler que de Python, car je n'ai jamais utilisé les équivalents de rubis), je pense pygtk (en utilisant Glade et une enveloppe comme Padraig Bradys libglade ) Faites de la programmation de l'interface graphique et amusante. Toutefois, si vous pouvez gonfler votre logiciel (ou payer les frais de licence), PYQT est également une bonne option et tout aussi bien sympathique que PYGTK + Glade (en cela avec GTK, vous pouvez définir votre interface utilisateur en gloire comme XML séparé. fichier, vous pouvez donc modifier l'interface utilisateur sans toucher le code; dans qt Si vous souhaitez utiliser QTDesigner, vous devez générer du code à l'aide de UIC, si je me souviens bien), l'API elle-même est vraiment vraiment agréable d'utiliser et de refléter la conception propre des frameworks QT. de très près.

Surtout, je vous recommanderais probablement d'utiliser PyqT sur Pygtk, mais je peux être biaisé depuis que je préfère beaucoup qt sur gtk de nos jours, bien que vous puissiez essayer les deux et voyez que vous préférez - ils sont tous les deux presque triviaux de travailler .

Si vous recherchez un excellent livre sur Pyqt, j'aurais recommencement Programmation rapide de l'interface graphique Python et QT .

Résumer: IMHO QT bat gtk dans la qualité et la capacité. Pygtk et Pyqt sont d'une excellente qualité et de fonctionnalités reflètent le cadre sous-jacent, bien que Pygtk puisse charger des fichiers XML Glade XML.


4 commentaires

Merci pour l'entrée :-) En réalité, QT vous a permis de sauvegarder vos fichiers de concepteurs QT sous XML et de les charger directement pendant un certain temps. Je lis sur GTK + Model-View-Controller Stuff. GTKTreeView, etc. Jusqu'à présent, je pense que la conception semble mieux que la solution de QT. Mais je ne l'ai pas utilisé, donc je me tromperais. Des commentaires sur cela? Y a-t-il des zones particulières dans QT vous trouverez-vous plus facile à travailler avec GTK? Par exemple. Disposition, système de fentes de signaux, créant de nouveaux widgets ou simplement le fait que C ++ est plus facile à travailler avec C?


Intéressant, quand je le cherchais il y a quelque temps, je n'ai rien trouvé .. J'aime le mécanisme de la fente de signaux QTS, c'est très flexible et facile à utiliser; J'aime vraiment le système GraphicsView pour mieux que les équivalents GTK et j'ai constaté que le jeu de widget Qt est plus complet et fonctionnait plus riche (par exemple sans extensions clunky, GTK n'a pas de prise en charge des fenêtres dotées). Je fais la majeure partie de mon travail en C ++ maintenant et je le trouve pratique et facile (pas aussi simple que Python, mais assez proche que je vais bien écrire un code QT en C ++, en particulier le code de dessin, sans vous soucier de la complexité du code)


Ok, intéressant. Je n'ai pas pensé à toutes les autres APIS QT a, comme Graphicsview. Qui est vraiment assez gentil. J'ai regardé GTKCOMBOBOX et GTKTREEVIEW et qui semblait mieux conçu que Qcombobox et Qtreeeeview. Plus facile de mettre des widgets en colonnes et de définir le modèle. Que voulez-vous dire par des extensions maladroites? Les autres aptituées à base de gobject comme l'encombrement, etc.?


Je ne peux pas trouver un exemple maintenant, c'est peut-être amélioré depuis que j'ai regardé, mais j'ai eu des problèmes d'installation de widgets d'extension avancés, en particulier sur Windows, mais même sur Linux. Les comboBoxes sont en effet un peu plus faciles à utiliser dans GTK. Je n'ai jamais eu besoin de les utiliser trop, alors je ne sais pas si les QTS plus complexes sont plus puissants ou non. J'aime beaucoup les autres bibliothèques: qtconcurrent, qtwebkit, vue graphiques et qtnetwork surtout. Je suppose que certaines personnes préféreraient ne pas avoir un ensemble de cadre trop beaucoup, mais je l'aime dans l'affaire QTS.



1
votes

J'ai essayé quelques combinaisons autour de Qt: Rubyqt, Jruby + Jambi, Pyqt. Le premier se termine rapidement dans diverses défauts de segmentation. Mes compétences QT peuvent être le problème, mais toutes les défauts SEG ne sont pas assez lisibles. Le forum pour Rubyqt est presque mort alors ne vous attendez pas à trouver beaucoup d'informations là-bas.

Alors j'ai déménagé à Jruby + Jambi. Cela a fonctionné jusqu'à ce que j'ai atteint des fonctions manquantes ici et là. De plus, je devais mettre en œuvre un signal / connexion approprié pour Jruby. Donc, plus ou moins un piratage. Pas convaincant.

Enfin, j'ai déménagé à Python (ce que je n'aime pas beaucoup). Mais woooh, quelle différence. Les liaisons sont à jour, je reste à ECNounter une défaillance de Segmétio, les messages d'erreur sont la plupart du temps très explicatif. Jusqu'à ce que je suis concerné, Python + Qt est un gagnant clair.

Veuillez noter que j'essayais ces combinaisons afin de trouver une liaison de langue / qt correcte afin que je puisse créer une production prête avec mes heures de commutation (environ 2 heures par jour). Donc, ma tolérance à des problèmes à petit mais gênant, telles que les défauts de segmentation, c'est 0. J'ai également à développer sur Windows et Linux. Donc, l'installation de Windows est nécessaire (et encore une fois, Python est un gagnant clair ici).


0 commentaires