web-dev-qa-db-fra.com

Que dois-je choisir: GTK + ou Qt?

Quelqu'un peut-il suggérer quelles sont les meilleures utilisations de ces bibliothèques aujourd'hui? Est-ce juste une interface graphique, ou ont-ils également un support de base de données, XML, réseau, threading, etc.?

Je lisais à leur sujet et envisageais de commencer à apprendre/utiliser l'un d'eux.

Quelle est la plus courante? Quelle est la différence entre eux? Pourquoi choisiriez-vous l'un plutôt que l'autre?

83
Idan

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

Si vous codez en C, optez é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 tous deux 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 à mon avis comme Nokia a abandonné Qt Jambi (les liaisons Java pour Qt).

De plus, Qt est plus haut de gamme en ce qui concerne son API de scénario QGraphicsScene , son moteur de script construit sur Javascript Core (le moteur alimentant WebKit), sa machine d'état et son cadre d'animations, et le interface utilisateur déclarative .

GTK + n'offre pas grand-chose bien que vous puissiez utiliser Clutter avec lui.

Si vous cherchez spécifiquement dans DB, XML (GTK + a un analyseur pour un sous-ensemble de XML) et threading (GTK + a GLib ), alors Qt offrira tout cela dans QtSql =, QtXml et QtConcurrent .

Dans l'ensemble, je dirais que Qt est un choix sûr. Mais GTK + est également très performant.

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

PS: Si vous envisagez de cibler également Symbian, optez pour Qt.

EDIT: Quelque chose qui est également génial avec Qt est QtWebView: il apporte Chromium dans votre application Qt pour afficher du contenu Web. D'autres intègrent du contenu Web dans leur application en utilisant par exemple Awesomium ou Berkelium.

89
Gregory Pakosz

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

Pour mon premier projet d'interface utilisateur multiplateforme, j'ai décidé d'opter pour wxWidgets principalement parce qu'à l'époque la licence n'était pas aussi restrictive que celle de QT (QT était GPL et uniquement pour Linux) et qu'elle avait une interface utilisateur spécifique à la plate-forme (contrairement à GTK). Le projet a bien fonctionné, mais il y a eu quelques problèmes pour le compiler et l'exécuter correctement sur d'autres plates-formes - parfois certains événements ont été déclenchés différemment et ainsi de suite. Aussi 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 a fonctionné plus ou moins facilement. Je n'aimais pas du tout le fait que l'interface utilisateur ne semblait pas native sur Windows et Mac et aussi lorsque vous lancez une application GTK + qu'elle débogue toujours génère des charges d'avertissements CRITIQUES qui semblent bien ignorer.: S

Enfin, j'ai fait un projet QT très simple maintenant que Nokia l'a acquis et était brillant. Le meilleur des trois. Tout d'abord, si vous n'êtes pas un ancien élève qui préfère VI ou Emacs, QtCreator est génial. J'adore vraiment VI et je l'utilise depuis des années mais je préfère de loin 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 commencerez à l'adorer. Je fais maintenant du développement iPhone et cela ressemble un peu au paradigme de l'interface utilisateur de Cocoa/Interface Builder.

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

40
rui

Je n'ai jamais utilisé GTK, mais d'après mon expérience personnelle avec Qt:

C'est bien plus qu'une simple interface graphique. C'est tout un cadre d'application. Je le considérais comme les bibliothèques Java pour C++. Il fournit tout ce que vous mentionnez - base de données, XML, mise en réseau et threading, et plus encore. Il fournit également des éléments tels que des conteneurs et des itérateurs, et homologues à un certain nombre de bibliothèques boost.

La chose 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 tutoriels. J'ai trouvé que cela faisait une grande différence dans la recherche sur le Web à chaque fois pour obtenir des informations sur l'API. Accès très rapide lorsque vous devez vous souvenir d'une signature de méthode.

Je ne sais pas lequel est le plus courant; 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-dessus de GTK, il est évidemment largement utilisé. Bien sûr, KDE est également très populaire. Nokia pousse fortement Qt dans l'espace mobile - leur système d'exploitation Maemo, utilisé sur le nouveau N900 par exemple, va bientôt passer à Qt en tant que boîte à outils par défaut (actuellement GTK). Je pense que Qt deviendra également bientôt la boîte à outils par défaut pour 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 une forte intégration évidente avec Qt. Il a aussi une fausse émulation vim qui est toujours sympa si vous aimez ce genre de chose!

Qt utilise qmake pour la configuration de build. J'ai trouvé cela bien plus agréable que d'avoir à écrire vos propres makefiles. Je ne sais pas ce que GTK utilise pour la construction.

Quelques choses que j'ai trouvé un peu choquantes avec Qt au début étaient ses grandes utilisations des macros de préprocesseur. Le système de signal/slots fournit un mécanisme agréable pour la transmission d'événements/de messages dans votre application, mais cela ressemble un peu à de la magie qui peut ne pas être facilement transportable dans une autre boîte à outils si vous le souhaitez. De plus, le moc (compilateur de méta-objets), bien que je ne sois pas tout à fait sûr de ce qu'il fait, ressemble aussi un peu trop à la magie qui se passe dans les coulisses.

Dans l'ensemble, cependant, je recommanderais Qt, surtout si vous apprenez. Il a une documentation vraiment incroyable et un joli IDE, et des forums très chargés. Vous pourrez créer des applications C++ très rapidement avec elle, en particulier avec le QML à venir en 4.7.

23
ngm

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

Gtk est en revanche 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, plutôt que les mérites techniques, mais si vous voulez que votre logiciel se marie bien avec ces deux, vous y arriverez plus facilement avec Gtk.

9
Slartibartfast

Qt a une base de données solide, un réseau, une prise en charge des threads, etc.

Je le recommanderais sur GTK +.

7
ChristopheD

Qt. Ce n'est pas seulement orienté objet, il est orienté "bon" 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 du masochisme;)).

Il a une forte dynamique maintenant que Nokia l'a acheté (en fait, Nokia l'a fait il y a environ 2/3 ans). Cela va être dans tous les appareils mobiles Nokia ET Intel (smartphones, netbooks, tablettes).

C'est l'épine dorsale de KDE, il est donc 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'un more-then-just-GUI devrait avoir.

Fonce.

3
Detro

Il suffit d'ajouter des avantages QT à d'autres réponses. QT a une excellente documentation, sa propre créateur IDE & GUI et améliore C++ avec de nouveaux concepts comme les slots/signaux (essentiellement des événements).

Je ne suis pas un développeur GTK, je ne peux donc pas les comparer au monde GTK :(

3
Gregor Petrin

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

1
trusktr

Il semble également que Nokia s'apprête à utiliser Qt partout, comme sur Maemo

1
jlru