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 des liaisons pour le langage :voir PyGtk, PyQt et PySide (celui lancé par Nokia lui-même).
Si vous codez en Java, Qt n'est plus une option viable à mon humble avis car Nokia a abandonné Qt Jambi (les liaisons Java pour Qt).
En outre, Qt est plus performant en ce qui concerne son API de graphe de scène QGraphicsScene, son moteur de script construit sur Javascript Core (le moteur qui alimente WebKit), sa structure de machine d'état et d'animations, et l'interface utilisateur déclarative.
GTK+ n'offre pas grand-chose bien que vous puissiez utiliser Clutter en même temps.
Si vous recherchez spécifiquement les fonctionnalités DB, XML (GTK+ a un analyseur pour un sous-ensemble de XML) et les fonctionnalités de 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 continuent de préférer 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.
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 pas mal de problèmes pour qu'il se compile et s'exécute correctement sur d'autres plates-formes - parfois, certains événements étaient déclenchés différemment, etc. De plus, GDI dans wxWidgets était assez lent.
Ensuite, j'ai utilisé GTK pour un projet différent en python. Pour cela, j'ai utilisé les fixations en python et tout s'est déroulé plus ou moins bien. Je n'ai pas vraiment aimé le fait que l'interface utilisateur n'ait pas l'air native sur Windows et Mac et aussi lorsque vous lancez une application GTK +, elle débogue toujours des tonnes d'avertissements CRITIQUES qui semblent bien être ignorés. :S
Enfin, j'ai fait un projet QT très simple maintenant que Nokia l'a acquis et c'était génial. Le meilleur des trois. Tout d'abord, si vous n'êtes pas un ancien scolaire 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 loin QtCreator pour les projets C++ QT. Concernant la librairie j'ai aussi 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'aimer. Je fais maintenant du développement sur iPhone et cela ressemble un peu au paradigme de l'interface utilisateur de Cocoa/Interface Builder.
Résumé :J'opterais pour QT haut la main. La licence est plutôt bonne et le SDK et la documentation sont vraiment sympas.