Benutzer des Qt-Toolkits schwören auf das intuitive API und die umfangreiche Dokumentation. Nicht nur freie Softwareprojekte wie Scribus, auch Firmen wie Mainconcept und Opera Software verwenden das Toolkit. Traditionell nutzt der Hersteller Trolltech die so genannten Major-Releases für eine Umstrukturierung des API.
Daher reicht es nicht, bei der Veröffentlichung einer neuen Version eigene Programme erneut zu kompilieren. Entwickler müssen ihren Code an die neue Schnittstelle anpassen. Trolltech hat aber offensichtlich aus den Problemen beim Umstieg von Qt 1 auf 2 gelernt. Neben einer offenen Preview- und einer ausgiebigen Beta-Phase hat sich das Unternehmen kurzfristig dazu entschieden, die Release der endgültigen Version ins "späte zweite Quartal" zu verlegen. Bisher war stets vom späten ersten Quartal die Rede.
Die Verspätung ist nachvollziehbar: Wer die Snapshots per Rsync[1] oder FTP[2] verfolgt, dem fallen zurzeit noch zahlreiche Fehler auf. Mitgelieferte Programme wie der Qt Designer kompilieren zeitweise gar nicht. Nach dem Erscheinen der zweiten Betaversion Mitte März sollte sich die Codebasis jedoch stabilisiert haben.
Dem Problem, dass Entwickler den gesamten Code, der auf der Qt-3-Bibliothek aufsetzt, überarbeiten müssen, begegnet Trolltech mit einem Konvertierungstool. Außerdem gibt es auf der Website eine detaillierte Einführung in die Technologien der neuen Version sowie Portierungshinweise unter[3] und[4], die sich jeder Entwickler anschauen sollte.
Mit Leichtigkeit</>
Den Ballast, den Qt 3.3 mit sich führt, wirft die neue Bibliothek ab. Denn seit Version 2.0 hat Trolltech sich praktisch von keiner Klasse getrennt. Dadurch erhöhte sich die Größe der monolithischen Bibliothek stetig, aktuell bringt sie stattliche 8,3 MByte auf die Waage. Somit hatte auch Qt 3 im Embedded-Bereich niemals denselben Erfolg wie sein Vorgänger; das im Embedded-Markt sehr verbreitete und beliebte Qtopia verwendet weiterhin Qt 2 Embedded.
Doch die Vorteile der Umstrukturierung bringen auch Nachteile mit sich: Ein Qt-3-Programmierer muss sich mit der neuen Version sehr stark umstellen. Das hat Trolltech erkannt und den Porting Guide erstellt[4]. Die Norweger teilen ihr Toolkit in nunmehr elf Bibliotheken auf, was den Speicherbedarf der Applikationen reduziert.
Programmautoren linken nur noch gegen die für sie relevanten Bibliotheken. Außerdem wandern alle veralteten Qt-Klassen in ein »Qt3Support«-Modul und erhalten ein »3«-Infix. Aus »QCString« wird »Q3CString«, da ihr Ersatz in Qt 4 »QByteArray« ist. Andere Klassen besitzen Kompatibilitätsfunktionen. Beide Portierungshilfen sind optional und lassen sich über ein Makro abschalten.
Im Zeichen der Effizienz
Erstmalig ist es auch möglich, alle Header einer Gruppe auf einmal einzubinden. »#include <QtGui>« zieht alle Header der »QtGui«-Bibliothek ins Programm. Diese Schreibweise, auch Java Case genannt, gilt für alle Klassen-Includes. Somit entspricht der Name eines Include immer dem Namen der entsprechenden Klasse. Die ».h«-Endung entfällt, was nach ISO-C++-Spezifikation Systemheader auszeichnet. Die alte Schreibweise »#include <header.h>« funktioniert jedoch nach wie vor. Ein kleines Manko bilden Klassen wie »QCanvas«, die ins »Qt3Support«-Modul abgeschoben sind, ohne dass für sie ein sinnvoller Ersatz existiert. Trolltech verspricht Nachfolger für die betroffenen Klassen in Qt 4.1 nachzureichen.
Eine wichtige Neuerung ist das Symbol- Hiding für GCC. Es entspricht etwa dem DLL-Export-Feature des Microsoft-C++-Compilers und ist vor allem für Programmierer von Nutzen, die Bibliotheken mit Qt schreiben. Nur Klassen und Funktionen, die zum API zählen, macht der Programmierer mit dem Schlüsselwort »Q_ DECL_EXPORT« nach außen sichtbar. Er stellt das Makro in der Deklaration hinter das »class«-Schlüsselwort beziehungsweise bei einer Funktion vor den Rückgabewert.