Login
Login-Name Passwort


 
Newsletter
Werbung

So, 5. März 2006, 00:00

Entwicklung von Applikationen in Qt 4.0

Qt ist ein populäres Tool zum Schreiben von GUI-Applikationen. Es ist durch seine sorgfältig vorbereitete API und durch die Möglichkeit, dieselben Quellen auf verschiedenen Plattformen zu kompilieren, gekennzeichnet. In der folgenden Artikelserie beschreibe ich die grundsätzlichen Aspekte von Qt und stelle, Schritt für Schritt, den Prozess des Entwerfens einer größeren Applikation vor.

Qt ist ein Tool der norwegischen Firma Trolltech zur Entwicklung von GUI-Applikationen in C++. Es ermöglicht, denselben Quellcode für die meisten gängigen Betriebssysteme zu kompilieren, z.B. für Windows, Linux, Mac und für viele embedded-Plattformen. In jedem Fall steht am Ende eine Applikation zur Verfügung, die genauso aussieht und sich verhält, wie native Applikationen, die mit dem API des Betriebssystems geschrieben wurden, auf dem sie kompiliert wurde.

Qt wird unter zwei Lizenzen veröffentlicht. Die erste ist GPL, wodurch Programmierer, die Open-Source-Software schreiben, die Tools von der Seite www.trolltech.com kostenlos herunterladen können (zusammen mit Quellen). Natürlich muss in diesem Fall das Programm, mit dem Qt gelinkt wurde, auch unter der GPL-Lizenz veröffentlicht werden. Dank dieser Lizenz ist Qt die Basis der unter Linux populären KDE-Umgebung. Die GPL-Lizenz ermöglicht auch, Qt herunterzuladen, um damit einfach herumzuspielen.

Die zweite Lizenz ist kommerziell und muss gekauft werden. Sie ermöglicht, Qt auch in kommerziellen Applikationen einzusetzen.

Dieser Artikel ist in zwei Teile gegliedert. In dem ersten erkläre ich einige Basisklassen und Begriffe zwecks Entwicklung einer einfachen Applikation Paint. Im zweiten Teil verfolgen wir den Entwicklungsprozess einer komplizierteren Applikation QtCommander, die dem Norton Commander für Windows ähnlich ist. Beim Schreiben von QtCommander lernen wir Klassen kennen, die die Begriffe Model-View, Inline-Editing, sowie Drag and Drop implementieren.

Bestandteile von Qt

Qt besteht aus einigen C++-Bibliotheken und Applikationen. Es ist aber keine IDE - die Bearbeitung von Quellen erfolgt in der Lieblingsentwicklungsumgebung des Programmierers. Für diesen Artikel habe ich den einfachen Editor kate benutzt, weil IDEs einige Schritte der Entwicklung von Qt-Programmen automatisieren und ich möchte, dass die Beschreibung keine Geheimnisse enthält.

Bibliothek QtCore

Die Basisbibliothek von Qt heißt QtCore und enthält Klassen, die nicht mit Grafik verbunden sind. Auf dieser Bibliothek basiert der ganze Rest von Qt. Viele Klassen in QtCore haben ihre Gegenstücke in STL, sowohl in der Funktionalität als auch in der Art der Benutzung. Strings und alle Container-Klassen verwenden die Methode copy on write, wodurch man sie problemlos als Funktionswerte zurückgeben kann.

Strings werden in Qt durch die Klasse QString behandelt. Jedes Zeichen ist in 16 Bit (short int) im Unicode-Standard kodiert (UTF-16). QString enthält auch Funktionen zur Umwandlung zwischen verschiedenen Zeichensatzsystemen - ASCII, UTF-8, UTF-16 und verschiedenen ISO-Standards, darunter ISO-8859-2.

QtCore enthält auch die Klasse QObject, die die Hauptrolle in vielen Mechanismen spielt, wie die Kommunikation über Signale und Slots, Introspektion und Eigenschaften (object properties). QtCore enthält über 200 andere nützliche Klassen wie QMap, QList, QSettings, QVariant, QFile, QUrl, QThread und QMutex.

Bibliothek QtGui

QtGui enthält alle Klassen, die auf dem Bildschirm gezeichnet werden können. Diese Klassen erweitern die Klasse QWidget, die ein leeres Rechteck zeichnet. QWidget ist auch die Basisklasse im Mechanismus der Ereignisbehandlung (event handling) und der Einstellung der GUI-Elemente auf einem Formular (layouting). QWidget ist die Basisklasse für über 500 Klassen wie QPushButton, QTextEdit, QDialog, QIcon, QMenuBar, usw. Neue GUI-Elemente erstellen wir, indem wir eine Klasse schreiben, die QWidget erweitert und eine eigene Implementation virtueller Funktionen bereitstellt, die für das Zeichnen und für die Ereignisbehandlung zuständig sind. Objekte vom Typ QWidget heißen Widgets. Alle Widgets in Qt kann man mit einem bestimmten Oberflächen-Stil versehen (stylable widgets). Qt enthält einige fertige Stile: Windows, Mac, Motif, CDE und den unter Linux standardmäßigen Stil Plastique. Neue Stile kann man schreiben, indem man die Klasse QStyle erweitert und dort Zeichenfunktionen überlädt. Stile kann man sogar dynamisch wechseln, indem man QApplication::setStyle() aufruft.

Spezialbibliotheken

Qt enthält noch einige Bibliotheken für spezielle Aufgaben.

QtNetwork
eine Schnittstelle für TCP- und UDP-Sockets, sowie Implementationen von DNS-, HTTP und FTP-Protokollen.
QtSql
eine Schnittstelle zur Manipulation von Datenbanken: DB2, InterBase, MySQL, OCI, ODBC, PostgreSQL, Sqlite und TDS.
QtOpenGL
ermöglicht, dreidimensionale Grafik im OpenGL-API zu zeichnen.
QtXml
beinhaltet die Implementationen von SAX2 und DOM.
QtAxContainer
beinhaltet Klassen, die es ermöglichen, ActiveX-Bedienelemente in Qt zu schreiben.

Zusätzlich bietet die Firma Trolltech viele verschiedene Bibliotheken im Rahmen des Projektes Qt Solutions. Besitzer der kommerziellen Lizenz können Klassen zur Bedienung des SOAP-Protokolls, ein Framework zur Implementation von Undo/Redo, Dialoge zur Farbenauswahl und viele andere fertige Lösungen herunterladen.

assistant

assistant ist eine Applikation zur Anzeige der Dokumentation von Qt. Hier kann man vollständige Informationen über alle Klassen, Beispielanwendungen und detaillierte Beschreibungen aller Mechanismen in Qt finden.

qmake

Qt ist eine Bibliothek, die es ermöglicht, Applikationen für verschiedene Umgebungen zu kompilieren, darunter für Windows, X11 und Mac. Jede Umgebung hat eigene Tools, wie z.B. den Compiler, den Linker und das make-Programm. Je nach der Umgebung heißen diese Tools anders und verwenden andere Optionen. Was noch schlimmer ist, make benötigt in jeder Umgebung eine etwas andere Syntax für die Makefile-Dateien.

Qt kommt mit diesem Problem mit Hilfe von qmake zurecht. Das ist ein Programm, das die Projektbeschreibung (Datei mit dem Suffix .pro) liest und daraus das Makefile generiert. Wenn wir qmake auf der Windows-Plattform starten, wird ein Makefile für das Microsoft-Tool nmake erstellt, die Aufrufe an cl enthält, also an den Compiler vom Microsoft Visual Studio.

Das unter Linux gestartete qmake generiert ein Makefile, das durch GNU Make verstanden wird und Aufrufe für den GCC-Compiler enthält. Qt kommt mit einer breiten Auswahl von Plattformen und Compilern zurecht. Alle möglichen Kombinationen kann man im Verzeichnis $QTDIR/mkspecs sehen.

qmake, das ohne Parameter ausgeführt wird, sucht im aktuellen Verzeichnis die Datei mit der Erweiterung .pro und generiert dann dafür eine Makefile. Um ein Programm auf einer beliebigen Plattform zu kompilieren, muss man also Quellen entpacken, in das Hauptverzeichnis mit der .pro-Datei wechseln und die Anweisungen qmake und make ausführen.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung