Qt hält Software plattformneutral

01.12.2006
Von Christian Dietrich

Das zahlt sich aus. Denn auf der Basis des portablen Quellcodes lassen sich dann Binärdateien für viele unterschiedliche Zielsysteme, die sich in Prozessor und Betriebssystem unterscheiden können, erzeugen. Dazu ist allerdings immer ein Compiler für das entsprechende Zielsystem erforderlich. Zwei Szenarien sind dabei denkbar:

  • Übersetzen der Sourcen auf dem Zielsystem;

  • Übersetzen der Sourcen durch einen Cross-Compiler für das Zielsystem.

Während der erste Ansatz häufig bei den typischen PC- Betriebssystemen verwendet wird, ist der zweite Ansatz ins- besondere für Embedded-Lösungen interessant, die oft nicht über genügend Ressourcen für das Entwicklungssystem verfügen.

Qt-Varianten

Bei Qt handelt es sich um eine Klassenbibliothek zur plattformübergreifenden Programmierung grafischer Benutzeroberflächen. Der Qt-Entwickler, die norwegische Firma Trolltech, stellt ein duales Lizenzsystem zur Verfügung:

  • Die Open-Source-Edition steht unter der GNU General Public License (GPL) und kann kostenfrei unter www.trolltech.com heruntergeladen werden.

  • Die kommerzielle Version steht unter einer kostenpflichtigen Lizenz, die einen Support seitens Trolltech beinhaltet.

Die kommerzielle Version wird nur benötigt, falls mit Qt Produkte entwickelt werden, die nicht unter einer freien Lizenz stehen. Der Funktionsumfang der Open-Source-Edition ist gegenüber der kommerziellen Version nur geringfügig eingeschränkt.

Zum Ausgleich der Betriebssystem-Unterschiede gibt es systemabhängige Qt-Bibliotheken. Hierzu zählen:

  • Qt/X11 für Linux/Unix (unterstützt viele Derivate);

  • Qt/Embedded (Qtopia) für Embedded Linux;

  • Qt/Windows für Microsoft Windows;

  • Qt/Mac für Apple Macintosh.

Während der Qt-gestützte Quellcode immer identisch ist, werden die Daten von der Qt-Library Betriebssystem-typisch gespeichert:

  • Linux/Unix: QSetting speichert die Daten in den gewohnten Textdateien.

  • Windows: QSetting speichert die Daten in der Registry.

  • Mac OS X: QSetting verwendet die Carbon API für Settings, um die Daten zu speichern.

Wenig vorausschauend

Der Mehraufwand für die Bereitstellung von Software für mehrere Betriebssysteme ist durch den plattformunabhängigen Quellcode relativ gering. Dennoch wird oft gerade dieser Aufwand gescheut und das Programm auf eine Windows-Version beschränkt, da die meisten Anwender ohnehin Windows verwenden. Der Rückgriff auf Qt, das in einem dualen Lizenzsystem zur Verfügung steht, lohnt sich dennoch. So bietet selbst die Open-Source-Version von Qt umfangreiche Funktionen in über 400 Klassen. Hierzu zählen unter anderem:

  • Vektor- und Pixelgrafik: Gängige Grafikformate lassen sich lesen, darstellen, manipulieren und schreiben. Ferner unterstützt Qt Open GL und das SVG-Format.

  • Internationalisierung: Der Qt Linguist unterstützt die Eingabe von Texten in unterschiedlichen Sprachen auf der Grundlage von i18n.

  • GUI-Design: Qt bietet einen GUI-Designer, mit dem man das Oberflächenlayout per Drag and Drop erstellen kann. Für die dynamische Positionierung der grafischen Steuerelemente stehen mehrere Layout-Manager zur Verfügung. Das Design der Steuerelemente lässt sich automatisch an das Design der gängigen Betriebssysteme anpassen. Eigene GUI-Themes können implementiert werden.

  • Datenbankanbindung: Qt unterstützt mit Hilfe eines eigenen Moduls die nahtlose Anbindung an verschiedene Datenbanken.

  • XML-Format: Qt verfügt durch ein eigenes Modul über Funktionen zum Lesen, Manipulieren und Schreiben von XML-Inhalten.

Neben der Standard-C++-Implementierung gibt es auch verschiedene Open-Source-Implementierungen der Qt-Bibliothek für weitere Sprachen (Python, Ruby, C, C#, Java und Perl). Eine Java-Implementierung der Qt-Bibliothek ist laut Hersteller kurz vor der Fertigstellung und wird bereits als Technology-Preview angeboten.

Damit bleibt nur noch ein wesentliches Problem, mit dem sich viele C-/C++-Entwickler ungern auseinandersetzen: die Erstellung der Makefiles. Diese unterscheiden sich je nach Compiler und Betriebssystem. Hier stellt das Framework "qmake" einen Generator zur Verfügung, der das plattformspezifische Makefile auf einer plattformunabhängigen Projektdatei mit der Endung .pro durch den Befehl qmake erzeugt. Die plattformunabhängige Projektdatei enthält lediglich die zur Erstellung des Makefiles erforderlichen Anweisungen.