Que dois-je choisir: GTK+ ou Qt?
Peut-on suggérer que ce sont les meilleures utilisations de ces bibliothèques aujourd'hui? C'est juste de l'interface graphique, ou ont-ils de la base de données, XML, mise en réseau, le filetage, etc soutien trop?
Que j'ai lu sur eux, et considéré de départ pour l'apprentissage/l'aide de l'un d'entre eux.
Ce qui est le plus commun? Quelle est la différence entre eux? Pourquoi choisir l'un plutôt que l'autre?
À l'origine, il y avait beaucoup de controverse au sujet de l'intervalle Qt modèle de licence qui a été plein GPL ou commercial, tout en GTK+ a été LGPL (de sorte que le dernier est plus facile à utiliser en combinaison avec votre code source fermé du produit). Mais maintenant, Qt est également disponible sous licence LGPL autant que je me souvienne, ce n'est donc pas une vraie raison de plus de choisir l'un ou l'autre.
Vous pouvez aussi regarder ce la plupart du temps liés à la question: stackoverflow.com/questions/1801074/...
Et encore une bonne question fermée sur stackoverflow. Je tiens à ajouter que si vous avez besoin d'une bonne intégration HTML du widget, vous devez utiliser GTK maintenant (après QT 5.2 déplacé d'une façon spectaculaire/inutilisable un ensemble de fonctionnalités réduit) ou l'utilisation de QT et incorporer le Chrome de la CEF, qui est l'ajout de beaucoup de choses, à la complication et à 20 mo pour votre application.
Vous pouvez aussi regarder ce la plupart du temps liés à la question: stackoverflow.com/questions/1801074/...
Et encore une bonne question fermée sur stackoverflow. Je tiens à ajouter que si vous avez besoin d'une bonne intégration HTML du widget, vous devez utiliser GTK maintenant (après QT 5.2 déplacé d'une façon spectaculaire/inutilisable un ensemble de fonctionnalités réduit) ou l'utilisation de QT et incorporer le Chrome de la CEF, qui est l'ajout de beaucoup de choses, à la complication et à 20 mo pour votre application.
OriginalL'auteur Idan | 2009-12-11
Vous devez vous connecter pour publier un commentaire.
Comme vous semblez principalement Linux cible, alors le choix dépend principalement de la programmation de langue que vous souhaitez utiliser.
Si tu code en C, alors bien sûr aller pour GTK+
Si tu code en C++, go pour Qt, sinon, vous aurez besoin Z gtkmm (un wrapper C++ sur GTK+)
Si tu code en Python, les deux GTK+ et Qt liaisons pour la langue: voir PyGtk, PyQt et PySide (celle lancée par Nokia en eux-mêmes).
Si vous le code en Java, Qt n'est pas plus une option viable à mon humble avis que Nokia abandonnées Qt Jambi (la Java des liaisons pour Qt).
Aussi, Qt est plus haut de gamme quant à sa scène graphique QGraphicsScene API, son moteur de script construit sur Javascript de Base (la mise sous tension du moteur WebKit), sa machine de l'etat et des animations de cadre, et le déclaratif de l'INTERFACE utilisateur.
GTK+ n'offre pas autant bien que vous pouvez utiliser Le désordre aux côtés de la.
Si vous êtes à la recherche précisément en DB, XML (GTK+ est un analyseur syntaxique pour un sous-ensemble de XML) et le filetage (GTK+ a GLib) dispose alors Qt offrira à tous que, dans QtSql, QtXml et QtConcurrent.
Dans l'ensemble, je dirais que Qt est un choix. Mais GTK+ est très capable.
Je ne suis pas sûr que vous allez obtenir un cristal de réponse claire à votre question, ce qui explique pourquoi certaines personnes préférant garder Gnome sur KDE ou vice-versa. Choisir ce qui fonctionne le mieux pour vous.
PS: je vous prévoyez également cible Symbian, puis aller pour Qt.
EDIT: quelque Chose qui est aussi très bien avec le Qt est
QtWebView
: il apporte de Chrome dans votre application Qt pour afficher un contenu web. D'autres sont l'incorporation de contenus web dans leur application, par exemple, de Awesomium ou Berkélium.Concernant votre montage, il est WebKitGtk+ pour GTK+. À moins que l'un est beaucoup plus mature que les autres, je ne pense pas que l'existence de QtWebKit se qualifie comme un avantage sur GTK+.
Si vous code dans Ruby pour QtRuby.
gtkmm
est grande, toute la puissance de GTK+, mais à l'aide de C++ par la définition moderne, la production plus propre, plus lisible le code de la GUI que j'ai vu... en fait, la plupart des supportable, parce que quand j'ai commencé à essayer d'apprendre la programmation GUI, c'était la propreté degtkmm
qui a restauré ma volonté de vivre. Heureusement, la persévérance a payé, et j'ai trouvé qu'il est très puissant, et il m'a encouragé à aller plus en avant dans C++14 que C++03. Aussi, il est bien entretenu, par le même responsable principal depuis plus d'une décennie AFAICT. Je suis juste un fan, sans affiliation, etc.Oh... le Symbian jours ...
OriginalL'auteur Gregory Pakosz
J'ai utilisé GTK+, QT et wxWidgets avant. Voici un bref résumé:
Pour mon premier cross plate-forme de l'INTERFACE, j'ai décidé d'aller pour wxWidgets principalement parce qu'à l'époque de la licence n'était pas aussi restrictif que de QT (QT a été GPL et que pour Linux) et il avait de la plate-forme d'INTERFACE utilisateur (contrairement à GTK). Le projet a bien fonctionné, mais il y avait assez peu de pépins de le faire pour compiler et exécuter correctement dans d'autres plates - formes, parfois, certains événements ont été tirés de façon différente. Aussi GDI dans wxWidgets a été assez lent.
Ensuite, j'ai utilisé GTK pour un autre projet en python. Pour cela, j'ai utilisé des bindings python et tout a fonctionné plus ou moins bien. Je n'aime pas vraiment le fait que l'INTERFACE n'a pas l'air natif sur Windows et Mac et aussi lorsque vous lancez un GTK+ app il toujours debug sorties des charges de la CRITIQUE des avertissements qui semblent bien à l'ignorer. :S
Enfin, j'ai fait très simple QT projet maintenant que Nokia a acquis et a été brillant. Le meilleur des trois. Tout d'abord, si vous n'êtes pas un vieux schooler qui préfère VI ou Emacs, QtCreator, c'est génial. J'aime vraiment VI et l'a utilisé pendant des années, mais je préfère de beaucoup de QtCreator pour C++ QT projets. Quant à la bibliothèque, j'ai aussi beaucoup aimé la documentation et les Api fournies. QT a une notion de slots et signaux d'introduire de nouvelles C++ mots-clés et un préprocesseur. En gros, après la lecture d'un tutoriel, vous allez obtenir facilement et va commencer à l'aimer. Je suis en train de faire de l'iPhone dev et il ne se sent un peu comme du Cacao/Interface Builder INTERFACE utilisateur du paradigme.
Résumé: j'irais pour QT mains vers le bas. La licence est assez bonne et le SDK et la documentation vraiment sympa.
when you launch a GTK+ app it always debug outputs loads of CRITICAL warnings which seem fine to ignore. :S
- non, ce n'est pas le cas, sauf si vous faites quelque chose de mal, qui est pas amende. Je n'ai jamais vu une fois un avertissement critique qui n'a pas de tige à partir d'un oops de mon propre et n'était pas très facile à corriger en utilisant le code est correct. Et j'obtiens aucun messages de débogage, pas même les avertissementsOriginalL'auteur rui
Je n'ai jamais utilisé GTK, mais de mon expérience personnelle à l'aide de Qt:
Il est beaucoup, beaucoup plus que simplement de l'interface graphique. C'est un cadre d'application. J'ai l'habitude de penser que les bibliothèques Java pour le C++. Il fournit tous vous citer -- base de données, XML, mise en réseau et le filetage, et plus encore. Il fournit également des choses telles que les conteneurs et les itérateurs et les homologues à un certain nombre de bibliothèques boost.
La chose qui m'a le plus impressionné lors du démarrage de l'utilisation de Qt a été extrêmement abondante documentation. Vous obtenez un programme appelé Qt Assistant, qui fournit entièrement indexés et consultables documentation de l'API sur votre bureau, ainsi que de nombreux exemples de code et des tutoriels. J'ai trouvé qu'il a fait une grosse différence pour la recherche sur le web à chaque fois pour les informations d'API. Très rapide d'accès lorsque vous avez besoin de vous souvenir d'une signature de la méthode.
Je ne suis pas sûr de ce qui est le plus commun, ce qui est probablement difficile à mesurer avec précision. Ils sont certainement à la fois populaire. Que Gnome est l'environnement de bureau par défaut d'Ubuntu et Gnome se trouve sur le dessus de GTK, il a évidemment une utilisation généralisée. Bien sûr, KDE est très populaire aussi. Nokia est lourdement en poussant Qt dans l'espace mobile, leurs OS Maemo, utilisé sur le nouveau N900 par exemple, va bientôt passer à Qt par défaut toolkit (actuellement c'est GTK.) Je crois que Qt sera également bientôt devenir le défaut toolkit for Symbian OS.
Je n'ai pas utilisé Qt Creator, mais j'ai entendu beaucoup de bonnes choses à ce sujet. C'est un C++ IDE avec un évident lourd intégration avec Qt. Il a aussi des faux vim émulation qui est toujours agréable si vous aimez ce genre de chose!
Qt utilise qmake pour la configuration de build. Je trouve cela beaucoup plus agréable que d'avoir à écrire votre propre makefiles. Je ne sais pas ce que GTK utilise pour la construction.
Un couple de choses que j'ai trouvé un peu offputting avec Qt était d'abord sa grosse utilise des macros du préprocesseur. Le rapport signal/slots système fournit un bon mécanisme pour l'événement/la transmission de message dans votre application, mais il ne se sent un peu comme de la magie qui ne peuvent être facilement portable à un autre toolkit si jamais vous voulez. Aussi la moc (meta-object compilateur), alors que je ne suis pas entièrement sûr de ce qu'il fait, se sent aussi un peu trop comme par magie il se passe derrière les coulisses.
Dans l'ensemble cependant, je vous recommande de Qt, en particulier si vous êtes d'apprentissage. Il est vraiment étonnant de la documentation et une belle IDE, et occupé les forums. Vous serez en mesure de construire C++ applications très rapidement, surtout avec le QML venir en 4.7.
OriginalL'auteur ngm
Il dépend probablement sur ce que vous voulez faire. Je recommande Qt, parce que c'est plus qu'une interface graphique, il a de belles liaisons Python (donc ne Gtk), et de l'interface graphique les bibliothèques elles-mêmes sont (subjectivement parlant) plus agréable, puis Gtk.
Gtk est en revanche plus fréquent dans le monde de linux, de sorte que vous pouvez probablement obtenir plus d'aide sur le web. La raison pour la généralisation de Gtk a probablement plus à voir avec Gnome et Ubuntu, plutôt que sur les mérites techniques, mais si vous voulez vous logiciel pour se fondre parfaitement avec ces deux, vous obtiendrez plus facilement avec Gtk.
OriginalL'auteur Slartibartfast
Qt pour un certain a de solides DB, réseau, en charge des threads etc... C'est beaucoup plus que juste de la croix-plate-forme de l'interface graphique (et il n'est plus très bien).
Je le recommande plus de GTK+.
OriginalL'auteur ChristopheD
Juste ajouter QT avantages à d'autres réponses.. QT a beaucoup de documentation, de sa propre IDE & GUI créateur et améliore C++ avec quelques nouveaux concepts comme les slots/signaux (en gros, événements).
Je ne suis pas un GTK développeur, donc je ne peux pas comparer ces GTK monde 🙁
OriginalL'auteur Gregor Petrin
Qt. Ce n'est pas seulement orienté objet, est "bon" orientée objet.
Il est basé sur un "sous-ensemble" de C++ qui ne repose pas sur l'obscurité de C++ (mais vous êtes autorisé à rester avec eux, si vous avez envie de masochisme 😉 ).
Il a une forte dynamique maintenant que Nokia acheté (en fait, Nokia n'a ~2/3 ans). Il va être dans tous les Nokia ET Intel appareils mobiles (smartphones, netbooks, tablettes).
C'est l'épine dorsale de KDE, donc il est très mature, mais il est conçu dans une manière très flexible, qui permet de prendre en charge tous les derniers "trucs cool" qu'un plus---GUI cadre doit avoir.
Aller pour elle.
OriginalL'auteur Detro
Aussi, il semble que Nokia est sur le point de l'utilisation de Qt partout, comme sur Maemo
OriginalL'auteur jlru
Si vous voulez que votre application de fonctionner sur iOS, Android, Blackberry, d'autres plates-formes mobiles, Windows, Mac OSX et Linux, l'utilisation de Qt.
qt-project.org
OriginalL'auteur trusktr