Que dois-je choisir: GTK + ou Qt?

Quelqu’un peut-il suggérer quels sont les meilleurs usages pour ces bibliothèques aujourd’hui? Est-ce juste une interface graphique, ou est-ce qu’ils ont aussi un support de firebase database, XML, réseau, threading, etc.

Je lisais à propos d’eux et envisageais de commencer à apprendre / utiliser l’un d’eux.

Quel est le plus commun? Quelle est la différence entre eux? Pourquoi choisiriez-vous l’un sur l’autre?

Comme vous semblez cibler principalement Linux, le choix dépend principalement du langage de programmation que vous souhaitez utiliser.

Si vous codez en C, alors allez évidemment pour GTK +

Si vous codez en C ++, optez pour Qt, sinon vous aurez besoin de Gtkmm (un wrapper C ++ sur GTK +)

Si vous codez en Python, GTK + et Qt ont des liaisons pour le langage: voir PyGtk , PyQt et PySide (celui lancé par Nokia eux-mêmes).

Si vous codez en Java, Qt n’est plus une option viable que Nokia a abandonné Qt Jambi (les liaisons Java pour Qt).

De plus, Qt est plus abouti en ce qui concerne son API QGraphicsScene de graphe , son moteur de script construit sur Javascript Core (le moteur de WebKit), sa machine à états et son cadre d’animations, et son interface déclarative .

GTK + n’en offre pas beaucoup, mais vous pouvez utiliser Clutter avec lui.

Si vous examinez spécifiquement la firebase database, XML (GTK + a un parsingur pour un sous-ensemble de fichiers XML) et les fonctionnalités de threading (GTK + a GLib ), alors Qt offrira tout cela dans QtSql , QtXml et QtConcurrent .

Globalement, je dirais que Qt est un choix sûr. Mais GTK + est également très compétent.

Je ne suis pas sûr que vous obtiendrez une réponse claire à votre question, ce qui explique pourquoi certaines personnes continuent à préférer Gnome à KDE ou vice versa. Choisissez ce qui fonctionne le mieux pour vous.

PS: je prévois aussi de cibler Symbian, alors va pour Qt.

EDIT: QtWebKit est également très utile avec Qt: il intègre WebKit dans votre application Qt. D’autres incorporent WebKit dans leur application en utilisant par exemple Awesomium ou Berkelium.

J’ai déjà utilisé GTK +, QT et wxWidgets. Voici un bref résumé:

Pour mon premier projet d’interface utilisateur multi-plateforme, j’ai décidé d’utiliser wxWidgets principalement parce qu’à l’époque, la licence n’était pas aussi ressortingctive que QT (QT était GPL et uniquement pour Linux) et avait une interface utilisateur spécifique à la plateforme (contrairement à GTK). Le projet a bien fonctionné mais il y a eu pas mal de problèmes pour le comstackr et l’exécuter correctement sur d’autres plates-formes – parfois, certains événements ont été déclenchés différemment, etc. De plus, GDI dans wxWidgets était assez lent.

Ensuite, j’ai utilisé GTK pour un autre projet en python. Pour cela, j’ai utilisé les liaisons python et tout s’est déroulé de manière plus ou moins fluide. Je n’ai pas vraiment aimé le fait que l’interface utilisateur ne paraisse pas native sur Windows et Mac et que lorsque vous lancez une application GTK +, elle débogue toujours les charges des avertissements CRITICAL qui semblent corrects. : S

Enfin, j’ai réalisé un projet QT très simple maintenant que Nokia l’a acquis et qu’il était shiny. Le meilleur des trois. Tout d’abord, si vous n’êtes pas un ancien écolier qui préfère VI ou Emacs, QtCreator est génial. J’aime vraiment VI et je l’ai utilisé pendant des années, mais je préfère de beaucoup QtCreator pour les projets C ++ QT. En ce qui concerne la bibliothèque, j’ai également beaucoup aimé la documentation et les API fournies. QT a un concept de slots et de signaux qui introduisent de nouveaux mots-clés C ++ et un préprocesseur. Fondamentalement, après avoir lu un tutoriel, vous l’obtiendrez facilement et vous commencerez à l’aimer. Je fais maintenant le développement de l’iPhone et ça ressemble un peu au paradigme de l’interface utilisateur de Cocoa / Interface Builder.

Résumé: Je vais pour QT haut la main. La licence est assez bonne et le SDK et la documentation vraiment sympa.

Je n’ai jamais utilisé GTK, mais à partir de mon expérience personnelle en utilisant Qt:

C’est beaucoup plus qu’une simple interface graphique. C’est un cadre d’application complet. J’avais l’habitude de le considérer comme les bibliothèques Java pour C ++. Il fournit tout ce que vous mentionnez – firebase database, XML, mise en réseau et threading, et plus encore. Il fournit également des éléments tels que des conteneurs et des iterators, et des contreparties à un certain nombre de bibliothèques d’aide.

Ce qui m’a le plus impressionné lorsque j’ai commencé à utiliser Qt était la documentation extrêmement complète. Vous obtenez un programme appelé Qt Assistant, qui fournit une documentation API entièrement indexée et consultable sur votre bureau, ainsi que de nombreux exemples de code et didacticiels. J’ai trouvé que faire une recherche sur le Web à chaque fois pour obtenir des informations sur les API faisait toute la différence. Accès très rapide lorsque vous devez vous souvenir d’une signature de méthode.

Je ne suis pas sûr de ce qui est le plus commun; c’est probablement difficile à mesurer avec précision. Ils sont certainement tous les deux populaires. Comme Gnome est le bureau par défaut d’Ubuntu et que Gnome se trouve au sumt de GTK, son utilisation est évidemment très répandue. Bien entendu, KDE est également très populaire. Nokia pousse fortement Qt dans l’espace mobile – son système d’exploitation Maemo, utilisé par exemple sur le nouveau N900, va bientôt basculer vers Qt en tant que kit d’outils par défaut (actuellement, il s’agit de GTK). Symbian OS.

Je n’ai pas utilisé Qt Creator, mais j’ai entendu beaucoup de bonnes choses à ce sujet. C’est un IDE C ++ avec une forte intégration évidente avec Qt. Il y a aussi une fausse émulation de vim qui est toujours agréable si vous aimez ce genre de chose!

Qt utilise qmake pour la configuration de la construction. J’ai trouvé cela beaucoup plus agréable que de devoir écrire vos propres makefiles. Je ne sais pas ce que GTK utilise pour construire.

Au début, Qt avait quelques problèmes avec les macros préprocesseurs. Le système signal / slots offre un bon mécanisme pour le passage d’événements / messages dans votre application, mais il ressemble un peu à de la magie qui peut ne pas être facilement transférable à une autre boîte à outils si vous le souhaitez. De même, le moc (compilateur de méta-objects), même si je ne suis pas tout à fait sûr de ce qu’il fait, ressemble un peu trop à la magie qui se passe dans les coulisses.

Dans l’ensemble, je recommanderais Qt, surtout si vous apprenez. Il a une documentation vraiment étonnante et un joli IDE, et des forums occupés. Vous pourrez construire des applications C ++ très rapidement, en particulier avec le QML 4.7.

Cela dépend probablement de ce que vous voulez faire. Je recommanderais Qt, parce que c’est plus que l’interface graphique, il a de belles liaisons Python (Gtk aussi), et les bibliothèques GUI elles-mêmes (subjectivement parlant) sont plus agréables que Gtk.

Gtk est par contre plus courant dans le monde Linux, vous pouvez donc probablement obtenir plus d’aide sur le Web. La raison de la généralisation de Gtk a probablement plus à voir avec Gnome et Ubuntu, qu’avec les avantages techniques, mais si vous voulez que votre logiciel se mélange bien avec ces deux logiciels, vous le réaliserez plus facilement avec Gtk.

Qt pour un sûr a la firebase database solide, le réseau, le support de threading etc.… Il fait beaucoup plus que juste l’interface graphique multi-plateforme (et il fait la plupart du temps assez bien).

Je le recommande sur GTK +.

Il suffit d’append des avantages QT à d’autres réponses. QT possède une excellente documentation, son propre créateur IDE & GUI et améliore C ++ avec de nouveaux concepts tels que les slots / signaux (essentiellement des événements).

Je ne suis pas développeur GTK, donc je ne peux pas comparer ceux-ci au monde GTK 🙁

Qt. Ce n’est pas seulement orienté object, c’est “bien” orienté object. Il est basé sur un “sous-ensemble” de C ++ qui ne repose pas sur l’obscurité de C ++ (mais vous êtes autorisé à les respecter, si vous voulez du masochisme;)).

Il a un fort élan maintenant que Nokia l’a acheté (en fait, Nokia l’a fait il y a environ 2/3 ans). Ce sera dans tous les appareils mobiles Nokia ET Intel (smartphones, netbooks, tablettes).

C’est l’épine dorsale de KDE, donc il est très mature, mais il est conçu de manière très flexible, ce qui permet de prendre en charge AUJOURD’HUI tous les derniers “trucs sympas” qu’une infrastructure graphique plus que juste devrait avoir.

Fonce.

On dirait aussi que Nokia est sur le point d’utiliser Qt partout, comme sur Maemo

Si vous souhaitez que votre application s’exécute sur iOS, Android, Blackberry, d’autres plates-formes mobiles, Windows, Mac OSX et Linux, utilisez Qt.

qt-project.org