C++-Framework: Was sich mit Qt 5 ändert

Seite 4: Fazit

Inhaltsverzeichnis

Nach all den theoretischen Überlegungen wendet sich der Artikel kurz der praktischen Frage zu, was zu tun ist, wenn man eine in Qt 4 gehaltene Anwendung betreibt. Aus Sicht des Autors ist die – wahrscheinlich überraschende – erste Antwort erst einmal "nichts". Ein Qt-4-Programm funktioniert auch nach der Auslieferung von Qt 5 ohne jegliche Probleme weiter.

Da Qt 5 die Anzahl der unterstützten Plattformen stark minimiert, ist es gar nicht nicht möglich, jede Applikation zu migrieren. Wenn ein Unternehmen auf Symbian oder Meego gesetzt hat, ist es von vornherein ausgeschlossen – die neue Version des Frameworks möchte mit diesen Betriebssystemen nichts mehr zu tun haben.

Sofern die Plattformauswahl mit der von Qt 5 übereinstimmt, ist noch die Frage nach der Sinnhaftigkeit zu beantworten. Wer Interesse an einer der für die Zukunft geplanten Plattformen hat (Stichwort iOS), sollte eine Migration dringend ins Auge fassen. Kommt das Programm hingegen mit den Möglichkeiten von Qt 4.8 aus, besteht kein akuter Bedarf für Upgrades.

Aufgrund der Erfahrungen des Autors (eines seiner Produkte wurde von Palm OS auf bada, HTML5 und Qt portiert) führt die von Diomidis Spinellis in seinem Klassiker "Code Reading" vorgeschlagene Vorgehensweise am schnellsten zu brauchbaren Ergebnissen. Dabei bringt man das zu portierende Programm ohne Anpassungen in eine Form, die der Compiler des neuen Systems verwerten kann. Nach jedem Compiler-Lauf beseitigt man einige Fehler – am Ende steht ein kompilierbares System, das einem sorgfältigen Test zu unterziehen ist und danach einsatzbereit ist. Der Vorteil der Methode liegt darin, dass der Compiler den Entwickler von Fehler zu Fehler führt. Man ist von der ersten Sekunde an produktiv und verliert wenig Zeit mit der in der Retrospektive meist unergiebigen Analyse von "Portierungs-Gotchas".

Bei Qt sind die ersten Schritte das Anpassen der .pro-Datei (Stichwort QtGui versus Widgets) und der diversen Header. Wer in seinem Programm noch immer auf das Qt3Support-Modul setzt, muss spätestens an der Stelle mit Refactoring beginnen – in Qt 5 ist es nicht mehr verfügbar. Ein weiterer Quell diverser Ärgernisse ist das Fehlen des Q_OBJECT-Makros in Headern. Aufgrund des neuen Typsystems verzeiht Qt 5 in dem Bereich weniger Fehler. Da der Compiler in diesem Fall Fehlermeldungen wirft, ist das Beheben nur eine Fleißaufgabe.

Sofern eine Applikation auch QML-Code enthält, stellt sich die Frage nach der Wahl des richtigen Moduls. Das Weiterverwenden von Qt Quick 1.0 ist problemlos möglich. Will man die neuen Features (und den besseren Renderer) der neuen Version verwenden, sind allerdings einige Anpassungen vorzunehmen.

In den meisten Fällen ist das Programm nach dem Abarbeiten dieser Schritte lauffähig. Sicherlich gibt es immer Sonderfälle, weshalb ein sorgfältiger Test des Programms in jedem Fall zielführend ist. Der Dienstleister KDAB hat auf seinem Firmenblog einen Bericht über die Portierung der PIM-Suite von KDE veröffentlicht. Er zeigt die Herausforderungen im Detail. Zusätzlich gibt es als Teil der offiziellen Dokumentation des Frameworks eine detaillierte Änderungsliste, die auf potenzielle Problemstellen hinweist.

Signifikante Überarbeitungen eines Frameworks laufen nie komplett schmerzfrei ab. Wer Qt-Anwendungen für Symbian entwickelte, erinnert sich mit Sicherheit an die schlaflosen Nächte nach jedem Update. Die fünfte Version des Frameworks verhält sich – in Summe gesehen – überraschend problemlos. Natürlich fehlen den neuen Modulen noch einige Features, und die eine oder andere Änderung in der Syntax von APIs und Includes ist mit Sicherheit ärgerlich.

Wer mit den neuen Features nichts zu tun haben möchte, darf Qt 5 im Großen und Ganzen wie die Vorgängerversion benutzen. Trotzdem profitieren auch QML-Verweigerer von der neuen Architektur. Wer seine Qt-Anwendung für Android ausliefert, verwendet automatisch Lighthouse beziehungsweise QPA.

Tam Hanna
befasst sich seit der Zeit des Palm IIIc mit Programmierung und Anwendung von Handheldcomputern. Er entwickelt Programme für diverse Plattformen, betreibt Onlinenews-Dienste zum Thema und steht für Fragen, Trainings und Vorträge gern zur Verfügung.
(ane)