GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Was soll ich wählen:GTK+ oder Qt?

Da Sie anscheinend hauptsächlich auf Linux abzielen, hängt die Wahl hauptsächlich von der Programmiersprache ab, die Sie verwenden möchten.

Wenn Sie in C programmieren, entscheiden Sie sich natürlich für GTK+

Wenn Sie in C++ programmieren, entscheiden Sie sich für Qt, andernfalls benötigen Sie Gtkmm (ein C++-Wrapper über GTK+)

Wenn Sie in Python programmieren, haben sowohl GTK+ als auch Qt Bindungen für die Sprache:siehe PyGtk, PyQt und PySide (die von Nokia selbst eingeführte).

Wenn Sie in Java programmieren, ist Qt meiner Meinung nach keine praktikable Option mehr, da Nokia Qt Jambi (die Java-Bindungen für Qt) eingestellt hat.

Außerdem ist Qt in Bezug auf seine Scenegraph-QGraphicsScene-API, seine Skript-Engine, die auf Javascript Core aufgebaut ist (die Engine, die WebKit antreibt), sein State-Machine- und Animations-Framework und die deklarative Benutzeroberfläche erstklassig.

GTK+ bietet nicht so viel, obwohl Sie Clutter parallel dazu verwenden können.

Wenn Sie speziell nach DB-, XML- (GTK+ hat einen Parser für eine Teilmenge von XML) und Threading- (GTK+ hat GLib) Features suchen, dann bietet Qt all das in QtSql, QtXml und QtConcurrent.

Alles in allem würde ich sagen, dass Qt eine sichere Wahl ist. Aber GTK+ ist auch sehr leistungsfähig.

Ich bin mir nicht sicher, ob Sie eine glasklare Antwort auf Ihre Frage erhalten werden, was erklärt, warum einige Leute Gnome gegenüber KDE oder umgekehrt bevorzugen. Wählen Sie, was für Sie am besten funktioniert.

PS:Wenn Sie planen, auch auf Symbian abzuzielen, dann entscheiden Sie sich für Qt.

EDIT:Etwas, das auch großartig mit Qt ist, ist QtWebView :Es bringt Chromium in Ihre Qt-Anwendung, um Webinhalte anzuzeigen. Andere betten Webinhalte in ihre Anwendung ein, indem sie beispielsweise Awesomium oder Berkelium verwenden.


Ich habe zuvor GTK+, QT und wxWidgets verwendet. Hier ist eine kurze Zusammenfassung:

Für mein erstes plattformübergreifendes UI-Projekt entschied ich mich für wxWidgets, hauptsächlich weil die Lizenz damals nicht so restriktiv war wie die von QT (QT war GPL und nur für Linux) und es eine plattformspezifische UI hatte (im Gegensatz zu GTK). Das Projekt hat gut geklappt, aber es gab einige Probleme damit, es auf anderen Plattformen richtig zu kompilieren und auszuführen - manchmal wurden einige Ereignisse anders gestartet und so weiter. Auch GDI in wxWidgets war ziemlich langsam.

Als nächstes habe ich GTK für ein anderes Projekt in Python verwendet. Dafür habe ich die Python-Bindungen verwendet und alles hat mehr oder weniger reibungslos geklappt. Mir gefiel die Tatsache nicht ganz, dass die Benutzeroberfläche unter Windows und Mac nicht nativ aussah, und auch wenn Sie eine GTK+-App starten, gibt sie beim Debuggen immer eine Menge CRITICAL-Warnungen aus, die anscheinend ignoriert werden können. :S

Schließlich habe ich ein sehr einfaches QT-Projekt durchgeführt, jetzt, wo Nokia es erworben hat, und es war brillant. Der beste der drei. Zunächst einmal, wenn Sie kein Oldschooler sind, der VI oder Emacs bevorzugt, ist QtCreator brillant. Ich liebe VI wirklich und benutze es seit Jahren, aber ich bevorzuge QtCreator für C++ QT-Projekte. In Bezug auf die Bibliothek mochte ich auch die Dokumentation und die bereitgestellten APIs sehr. QT hat ein Konzept von Slots und Signalen, die neue C++-Schlüsselwörter und einen Präprozessor einführen. Nachdem Sie ein Tutorial gelesen haben, werden Sie es im Grunde leicht verstehen und anfangen, es zu lieben. Ich mache jetzt iPhone-Entwicklung und es fühlt sich ein bisschen wie das UI-Paradigma von Cocoa/Interface Builder an.

Zusammenfassung:Ich würde mich zweifellos für QT entscheiden. Die Lizenz ist ziemlich gut und das SDK und die Dokumentation wirklich nett.


Linux
  1. Soundthemen in Linux:Was jeder Benutzer wissen sollte

  2. C++:Welche Regex-Bibliothek sollte ich verwenden?

  3. Was sollten die idealen Home-Verzeichnisberechtigungen in Linux sein?

  4. Als welcher Benutzer sollten NGinx und PHP ausgeführt werden?

  5. Locate and updatedb funktioniert nicht. Was soll ich machen?

Welche Ubuntu-Variante sollten Sie wählen?

Die 20 wichtigsten Gründe, warum Sie sich für einen Linux-Server entscheiden sollten

Was ist ein Homelab und warum sollten Sie eines haben?

Was ist Zsch? Sollten Sie es verwenden?

Welche alternative CentOS-Distribution sollten Sie wählen?

Soll ich Linux Server oder Windows wählen?