Dato che ti rivolgi principalmente a Linux, la scelta dipende principalmente dal linguaggio di programmazione che desideri utilizzare.
Se codifichi in C, ovviamente scegli GTK+
Se codifichi in C++, scegli Qt, altrimenti avrai bisogno di Gtkmm (un wrapper C++ su GTK+)
Se codifichi in Python, sia GTK+ che Qt hanno binding per il linguaggio:vedi PyGtk, PyQt e PySide (quello lanciato dalla stessa Nokia).
Se codifichi in Java, Qt non è più un'opzione praticabile, dato che Nokia ha interrotto Qt Jambi (i collegamenti Java per Qt).
Inoltre, Qt è di prim'ordine per quanto riguarda l'API QGraphicsScene dello scenegraph, il suo motore di scripting basato su Javascript Core (il motore che alimenta WebKit), la sua macchina a stati e il framework delle animazioni e l'interfaccia utente dichiarativa.
GTK+ non offre molto, anche se puoi usare Clutter insieme ad esso.
Se stai esaminando specificamente le funzionalità di DB, XML (GTK+ ha un parser per un sottoinsieme di XML) e threading (GTK+ ha GLib), Qt offrirà tutto ciò in QtSql, QtXml e QtConcurrent.
Tutto sommato, direi che Qt è una scelta sicura. Ma anche GTK+ è molto capace.
Non sono sicuro che otterrai una risposta cristallina alla tua domanda, il che spiega perché alcune persone continuano a preferire Gnome a KDE o viceversa. Scegli ciò che funziona meglio per te.
PS:se prevedi di prendere di mira anche Symbian, allora scegli Qt.
EDIT:Qualcosa che va bene anche con Qt è QtWebView
:porta Chromium nella tua applicazione Qt per visualizzare i contenuti web. Altri stanno incorporando contenuti web nella loro applicazione utilizzando ad esempio Awesomium o Berkelium.
Ho già usato GTK+, QT e wxWidgets. Ecco un breve riepilogo:
Per il mio primo progetto di interfaccia utente multipiattaforma ho deciso di scegliere wxWidgets principalmente perché all'epoca la licenza non era restrittiva come quella di QT (QT era GPL e solo per Linux) e aveva un'interfaccia utente specifica per piattaforma (a differenza di GTK). Il progetto ha funzionato bene, ma ci sono stati alcuni problemi tecnici per compilarlo ed eseguirlo correttamente su altre piattaforme - a volte alcuni eventi sono stati avviati in modo diverso e così via. Anche GDI in wxWidgets era piuttosto lento.
Successivamente ho usato GTK per un progetto diverso in Python. Per questo ho usato gli attacchi in pitone e tutto ha funzionato più o meno senza intoppi. Non mi è piaciuto molto il fatto che l'interfaccia utente non sembri nativa su Windows e Mac e anche quando avvii un'app GTK +, esegue sempre il debug di un sacco di avvisi CRITICI che sembrano buoni da ignorare. :S
Infine, ho realizzato un progetto QT molto semplice ora che Nokia l'ha acquisito ed è stato brillante. Il migliore dei tre. Prima di tutto, se non sei un vecchio liceale che preferisce VI o Emacs, QtCreator è geniale. Adoro VI e l'ho usato per anni, ma preferisco di gran lunga QtCreator per i progetti C++ QT. Per quanto riguarda la libreria mi è piaciuta molto anche la documentazione e le API fornite. QT ha un concetto di slot e segnali che introducono nuove parole chiave C++ e un preprocessore. Fondamentalmente, dopo aver letto un tutorial lo capirai facilmente e inizierai ad amarlo. Ora sto sviluppando iPhone e sembra un po' come il paradigma dell'interfaccia utente di Cocoa/Interface Builder.
Riepilogo:sceglierei QT a mani basse. La licenza è piuttosto buona e l'SDK e la documentazione sono davvero carini.