Wir schreiben das Jahr 2005. Mein Arbeitgeber möchte eine neue Software erstellen und wir sind dafür auf der Suche, nach einer nahezu plattformunabhängigen GUI-Bibliothek.
Wir beginnen, mit Qt herumzuspielen und sind begeistert. Bis wir Lizenz und Preise sehen. Schweren Herzenz begaben wir uns auf die weitere Suche und stießen irgendwann, eigentlich recht schnell und ich weiß gar nicht mehr, warum, auf wxWidgets.
Ich spielte einige Stunden, nein Tage und dann auch Wochen, damit herum und war doch sehr angetan, schon alleine, da wxWidgets die GUI-Elemente (in der Regel) nicht selbst zeichnete, so wie es Qt wohl tat (und nicht mehr tut, wenn es nicht sein muss), sondern eine Abstraktion der nativen GUI-Bibliotheken war, die auf den Zielplattformen ohnehin zur Verfügung standen. Auf Windows also MFC, auf Linux/FreeBSD/ähnliche GTK, auf macOS zu der Zeit Carbon, mittlerweile Cocoa, und so weiter und so fort.
Die Programmierung verlangte aber eine höhere Einarbeitung ab, als Qt dies tat und viele Dinge mussten selbst implementiert werden, bsplw. Datenbankabstraktionsschichten mit Persistenzbibliotheken und vieles mehr. All das machte aber Spaß und wenn man es einmal hat – und natürlich auch richtig gemacht hat -, dann kann man es ja wieder verwenden.
So lief es und wir schrieben eine Software nach der anderen. GUI-Software, Systemsoftware, sogar etliche Websites und Backends schrieb ich mit wxWidgets und meinen eigenen Bibliotheken. Ich war schnell, effizient, glücklich.
Doch ich empfand es immer als anstrengend, wxWidgets auf anderen Plattformen als FreeBSD (oder manchmal auch Linux) zu benutzen. Auf FreeBSD reichte sowas wie “c++ *.cpp -o MeinProgramm `wx-config --libs --cppflags
`”. Auf anderen Plattformen wie Windows und macOS war es halt kompliziert. Auf Windows mussste (und muss) man noch selbst gegen etliche Bibliotheken linken, auf macOS muss man das Bundling selbst schreiben und Bibliotheken bei der Auslieferung umbiegen. Nervig, ätzend.
Nachdem ich aber für kurze Zeit bei CGM anheuerte und die mit Qt einiges machten, setze ich mich, im Wissen darüber, dass die Lizenz nun liberaler geworden war, noch einmal ausgiebig damit auseinander. Mein Herz ging auf. Ich begann nicht nur, mich mit der Materie mehr zu beschäftigen, ich entwickelte die ersten Projekte darin.
Qt bringt für eltiche Systeme einen Installer mit und Programme und Scripts, die einem das Leben immens vereinfachen.
Es kommt eine komplette IDE, der QtCreator, mit, mit der man seine Programme entwickeln kann. Es wird ein GUI-Designer und vieles mehr mitgeliefert und auch das Deployment auf anderen Plattformen ist integriert und ein Kinderspiel.
Doch das ist nicht alles. Qt ist groß. Es deckt eine Menge ab. Von Netzwerkkommunikation über Datenbankhandling und GUI bis hin zur Entwicklung von Software für Android und iOS. Der (oftmals) selbe Code kompiliert unter allen Plattformen, so dass eine Crossplattformentwicklung relativ einfach (naja, nicht immer) möglich ist.
Aber was sagt die Lizenz? Bei wxWidgets ist es letztlich so: nimm und mach, erwähne uns. Bei Qt muss ich, wenn ich Änderungen am Qt-Code mache, diese auch freigeben. Eigene Software allerdings darf ich ohne Code herausgeben. Klingt das fair? Ja.
Noch eine Sache: Mit QML bringt Qt ein (weiteres) unglaublich mächtiges Werkzeug. Damit lassen sich die grafischen Oberflächen bis ins kleinste designen und anpassen, Abläufe definieren und Layouts für unterschiedliche Dinge entwerfen.
Die große Community hilft bei Problemen und es gibt einige Anwendungssoftware, die mit Qt umgesetzt ist.
Schaut es euch einmal an.