Qt (Bibliothek)

Qt (Bibliothek)
Qt
Qt-Logo
Entwickler Qt-Project
Aktuelle Version 4.7.4
(1. September 2011)
Betriebssystem Unix/Linux (mit X Window System), Mac OS X, Windows, Windows CE, OS/2, Symbian OS, Maemo, MeeGo[1]
Programmier­sprache C++
Kategorie Klassenbibliothek
Lizenz Duales Lizenzsystem (Proprietär und GPL Version 3), ab Version 4.5 zusätzlich LGPL Version 2.1 [2]
Deutschsprachig ja
http://qt-project.org

Qt (lies engl. cute[3], Aussprache [kjuːt]) ist eine C++-Klassenbibliothek für die plattformübergreifende Programmierung grafischer Benutzeroberflächen. Neben der Entwicklung grafischer Benutzeroberflächen bietet Qt umfangreiche Funktionen zur Internationalisierung sowie Datenbankfunktionen und XML-Unterstützung an und ist für verschiedene Betriebssysteme bzw. Grafikplattformen, wie X11 (Unix-Derivate), Mac OS X, Windows und als PDA-Version erhältlich. Qt wird insbesondere in den Bibliotheken der KDE Software Compilation 4 verwendet, welche gleichzeitig das prominenteste Vorzeigebeispiel der Klassenbibliothek darstellt.

Die Klassenbibliothek steht bis zur Version 4.4 sowohl unter der GNU General Public License (GPL) als auch unter einer proprietären Lizenz zur Verfügung. Die proprietäre Lizenz wird allerdings nur benötigt, falls mit der Bibliothek Produkte entwickelt werden, die unter keiner freien Lizenz stehen (siehe Duales Lizenzsystem). Ab Version 4.5 wird Qt auch unter der LGPL veröffentlicht.

Qt verwendet einen Präprozessor, genannt MOC (meta object compiler), um C++ um Fähigkeiten zu bereichern, die im Sprachstandard nicht enthalten sind, beispielsweise Signale und Slots sowie Introspektion. Der so erzeugte Code folgt dem C++-Standard, so dass er mit handelsüblichen Compilern übersetzt werden kann. Nokia bietet auch eine Java-API unter dem Namen Qt Jambi sowie darauf aufbauend eine QtScript-API (ECMAScript) an. Es gibt auch Anbindungen für Python (PyQt, PySide), Ruby (QtRuby), C# (Qyoto-Projekt), Java (Qt Java), PHP (PHP-Qt), D (QtD), Haskell (qtHaskell), Perl (PerlQt), Pascal (Qt4Pas), Ada (QtAda), QtScript mit KDE-Unterstützung (qtscript-smoke) und Falcon, die allerdings nicht vom Projekt selbst betreut werden.

Inhaltsverzeichnis

Geschichte

Qt wurde von dem norwegischen Unternehmen Trolltech (ehemals Quasar Technologies) entwickelt. Anfang 2008 wurde das Unternehmen von Nokia aufgekauft und die Entwicklung in der Sparte Qt Development Frameworks fortgeführt. Im Oktober 2011 hat Nokia das Projekt unter dem Namen Qt-Project als freie Software in die Hände der Open-Source-Community gegeben.[4]

Datum Version
10. Juli 1998 1.40
2. Oktober 1998 1.41
19. Dezember 1998 1.42
13. März 1999 1.44
26. Juni 1999 2.0
13. April 2000 2.1
7. Dezember 2000 2.2
8. März 2001 2.3
16. Oktober 2001 3
14. November 2001 3.1
24. Juli 2003 3.2
5. Februar 2004 3.3
29. Juni 2005 4
20. Dezember 2005 4.1
4. Oktober 2006 4.2
30. Mai 2007 4.3
6. Mai 2008 4.4
3. März 2009 4.5
1. Dezember 2009 4.6.0
8. Juni 2010 4.6.3
21. September 2010 4.7
9. November 2010 4.7.1
1. März 2011 4.7.2
4. Mai 2011 4.7.3
1. September 2011 4.7.4

Anfänge und Namensentwicklung

Haavard Nord und Eirik Chambe-Eng (die ursprünglichen Entwickler von Qt und später CEO und Präsident von Trolltech) begannen mit der Entwicklung von Qt im Jahre 1991, drei Jahre bevor das Unternehmen Quasar Technologies gegründet wurde. Später änderten sie den Namen in Troll Tech und dann in Trolltech.

Der Name Qt stammt daher, dass das Q nach Haavard Nords Geschmack besonders schön in seinem Emacs anzusehen war und das t an Xt (das X-Toolkit) erinnerte.[5]

Ausgesprochen wird Qt offiziell wie das englische Wort cute[3]. Dieses Wort soll die Ansicht der Entwickler ausdrücken, dass der Quelltext und die API von Qt eben cute seien, was auf Deutsch unter anderem so viel wie süß, hübsch usw., aber auch pfiffig heißt.

Lizenzierung

Kontroverse Auseinandersetzungen entstanden um das Jahr 1998, als sich abzeichnete, dass KDE sich als Standard-Desktop unter Linux durchsetzen würde. Da KDE zum großen Teil auf Qt basiert, machte sich ein großer Teil der Open-Source- und Freie Software-Gemeinde Sorgen, dass ein so wichtiger Teil des Systems unter kommerzieller Kontrolle stand. Das führte zu zwei Entwicklungen: Erstens wurde das Harmony-Toolkit entwickelt, welches die Funktionen von Qt exakt kopieren, jedoch unter einer Freie-Software-Lizenz stehen sollte. Zweitens begann die Arbeit am GNOME-Desktop, der ähnliche Funktionen wie KDE bieten sollte, allerdings das GIMP-Toolkit (GTK+) verwendete, das Freie Software war, aber in C programmiert ist.

Bis Version 1.45 verwendete Trolltech die FreeQt-License für Qt. Diese war weder eine Open-Source- noch eine freie Lizenz. Es war zwar erlaubt, den Quellcode einzusehen, modifizierte Versionen durften allerdings nicht veröffentlicht werden. Mit dem Erscheinen von Version 2.0 wechselte Trolltech zur Q Public License (QPL), einer Open-Source-Lizenz, die aber von der Free Software Foundation als inkompatibel zur GPL eingestuft wurde. Als der Druck auf Trolltech größer wurde und das Debian-Projekt sich wegen Lizenzproblemen weigerte, KDE zu vertreiben[6], änderte Trolltech im Jahre 2000 die Lizenz für die Linux-Variante des Toolkits. Seit Version 2.2 gab es fortan die Linux-Variante unter zwei Lizenzen: der GPL und der QPL (siehe Duales Lizenzsystem).

Die erste Version von Qt hatte nur zwei Varianten, Qt/X11 für Unix und Qt/Windows für Windows. Die Windows-Variante war ausschließlich unter einer kommerziellen Lizenz verfügbar. Gegen Ende des Jahres 2001 veröffentlichte Trolltech Qt 3.0 mit zusätzlicher Unterstützung für die Mac-OS-X-Plattform. Die Mac-OS-X-Variante war auch nur unter einer kommerziellen Lizenz erhältlich, bis im Juni 2003 Trolltech die Version 3.2 der Mac-OS-X-Variante auch unter die GPL stellte.

Im Februar 2005 kündigte Trolltech an, Qt ab der Version 4.0 auch für die Windows-Plattform unter die GPL stellen zu wollen.[7] Das bestätigte sich, als im Juni 2005 Trolltech ein einheitliches duales Lizenzsystem für alle unterstützten Plattformen veröffentlichte. Heute gibt es für jede Plattform proprietäre und Open-Source-Edition (GPL-Edition).

Seit der Version 4.3.1 vom 9. August 2007 räumt Trolltech Ausnahmen bei der durch die GPL lizenzierten Open-Source-Version ein, die es ermöglicht, Programme, die Qt benutzen, unter einer nicht-GPL-kompatiblen Lizenz zu veröffentlichen. Die akzeptierten Lizenzen sind namentlich in einer separaten Liste aufgeführt. Weiterhin muss der Quellcode des Programms des Unternehmens Trolltech im selben Ausmaß zugänglich gemacht werden, wie er auch anderen Benutzern zur Verfügung steht, und die Rechte des Autors, Diskussionen über das Programm zu führen und den Quellcode für jeden zugänglich zu machen, dürfen nicht durch jegliche Rechtsmittel (wie beispielsweise besondere Verträge) beschnitten werden. [8][9]

Trolltech hat angekündigt, weitere Versionen von Qt auch unter der dritten Version der GPL zu veröffentlichen.[10]

Im Januar 2009 teilte Qt Software mit, dass die Version 4.5 unter der LGPL verfügbar sein wird.[11] Am 3. März 2009 wurde diese dann veröffentlicht.[12] Durch die LGPL ist es möglich, auch ohne eine kostenpflichtige Lizenz proprietäre Software mit Qt zu entwickeln, ohne den Quellcode veröffentlichen zu müssen. Lediglich bei Änderungen am Quellcode von Qt selbst müssen diese Änderungen als Quellcode veröffentlicht werden.

Im März 2011 gab Nokia bekannt[13], dass sie das Geschäft mit kommerzieller Lizenzierung und Dienstleistung an Digia abgeben[14].

Absicherung über die KDE Free Qt Foundation

Noch bevor Qt doppellizenziert wurde, wurde 1998[15] die KDE Free Qt Foundation ins Leben gerufen, um zu verhindern, dass Qt im Falle einer Insolvenz oder Übernahme von Trolltech unter eine restriktivere Lizenz als die QPL fiele. Sie besteht aus jeweils zwei Vertretern von Trolltech und dem KDE e. V., wobei letztere im Zweifelsfall bei Abstimmungen die Mehrheit haben. Falls Trolltech länger als zwölf Monate keine Aktualisierungen (Updates) unter einer Open-Source-Lizenz liefern sollte, ist die „KDE Free Qt Foundation“ berechtigt, die letzte freie Qt-Version unter der BSD-Lizenz freizugeben.[15]

Varianten

Es gibt derzeit folgende Varianten des Qt-Toolkits, die auf verschiedenen Plattformen laufen. Sie sind alle sowohl unter LGPL als auch unter einer proprietären Lizenz verfügbar.

Neben dem Qt Toolkit existierte noch Qt Extended (ehemals Qtopia), eine PDA- und Smartphone-Plattform basierend auf Qt/Embedded. Bekannt wurde sie vor allem durch den Zaurus-PDA von Sharp. Die Entwicklung wurde jedoch am 3. März 2009 eingestellt, um nicht neben Qt eine parallele Entwicklung zu betreiben.[16]

Qt 3 im Projekt Trinity

Das Trinity-Projekt, das die ältere Version von KDE Version 3 weiterpflegt, übernimmt offiziell ab November 2011 den Quellcode für Qt 3 und wird damit zur zentralen Stelle für die Pflege des nicht mehr von Nokia unterstützten Frameworks.[17]

Externe Portierungen

Nach dem Nokia den Qt-Quellcode veröffentlicht hat, sind noch verschiedene Portierungen für folgende Plattformen entstanden, die teilweise noch sehr experimentell sind: OpenSolaris[18], Haiku[19], OS/2 eCS platform[20], Amiga OS4[21], iPhone[22][23], Android[24], webOS (Palm Pre)[25][26], Amazon Kindle DX.[27], Wayland (für das MeeGo Touch)[28].

Aktuelle Version

Mit Qt 4.0 vom 28. Juni 2005 hat Trolltech fünf neue Techniken eingeführt:

  • Tulip – Ein Satz neuer Container-Klassen.
  • Interview – Eine Modell-Ansicht-Architektur für elementbasierte Ansichten.
  • Arthur – Ein neues 2D-Zeichenframework.
  • ScribeUnicode-Textausgabe mit öffentlicher API zur Unterstützung von einfachen Textlayouts.
  • MainWindow – Eine modernere Hauptfenster-Architektur, die Symbolleisten, Menüs und andockbare Fenster ermöglicht.

Qt 4.1 wurde am 19. Dezember 2005 veröffentlicht und brachte SVG-Tiny-Unterstützung, ein PDF-Backend zum Qt-Drucksystem, und weitere Erweiterungen und Verbesserungen.[29]

Qt 4.2 erschien am 4. Oktober 2006 und brachte native CSS-Unterstützung zum Gestalten von Widgets. Auch wurden die QCanvas-Klassen von Qt 3.x zur Darstellung von zweidimensionalen Grafikobjekten durch ein Framework namens QGraphicsView zum Rendern von Grafikobjekten auf dem Bildschirm ersetzt.[30]

Seit dem 30. Mai 2007 steht Version 4.3 zur Verfügung. Sie brachte erweiterte Windows-Vista-Unterstützung, eine verbesserte OpenGL-Engine, sowie die Möglichkeit, SVG-Dateien zu erzeugen. Außerdem wurden eine ECMAScript-Engine namens QtScript und die Unterstützung von SSL-Verbindungen hinzugefügt.[31]

Qt 4.4 wurde am 6. Mai 2008 veröffentlicht.[32] Sie enthält erstmals Unterstützung für Windows CE, verwendet WebKit als HTML-Rendering-Engine und eine verbesserte API zur Programmierung von Anwendungen mit mehreren Threads.

Seit dem 3. März 2009 gibt es mit Qt 4.5 die neue Entwicklungsumgebung Qt Creator, womit Anwendungen für Linux, Mac OS X und Windows ohne zusätzliche Entwicklungswerkzeuge erzeugt werden können.[33]

Am 1. Dezember 2009 wurde Qt in der Version 4.6 veröffentlicht, welche nun auch Multi-Touch und die Plattformen Symbian OS und Meego unterstützt.[34]

Seit dem 21. September 2010 ist die Version 4.7 verfügbar. Mit dieser Version hält die deklarative Qt Meta-Object-Language Einzug in die Bibliothek.[35]

Editionen

von Qt Development Frameworks

Zum Download wird seit Qt 4.5 für Linux, Windows und Mac OS X ein vollständiges SDK angeboten, das neben den benötigten Qt-Bibliotheken auch die umfangreiche Qt-Dokumentation und den GCC-Compiler sowie den Qt Creator mitliefert. Außerdem werden Versionen, die nur das Framework (d. h. die Entwicklerbibliotheken und die Dokumentation sowie die grundlegenden Qt-Werkzeuge) beinhalten, angeboten. Diese stehen für alle unterstützten Plattformen zur Verfügung; für Windows gibt es auch eine Version zur Verwendung mit dem Visual-C++-Compiler von Microsoft.

Bis einschließlich Version 4.4 wurde zwischen den Versionen Qt Console (für die Entwicklung von Programmen ohne GUI), Qt Desktop Light (es fehlen Netzwerk-, Datenbank- und OpenGL-Unterstützung sowie das Graphics View), Qt Desktop (die vollständige Bibliothek) und der Open Source Edition (die vollständige Bibliothek zur Entwicklung von Open-Source-Anwendungen) unterschieden. Diese Unterteilung existiert heute nicht mehr.

von anderen Anbietern

Da es sich bei Qt um Freie Software handelt, gibt es auch Editionen anderer Anbieter:

  • Qt/Windows Free Edition – Das KDE/Cygwin-Projekt arbeitete an einer nativen Windows-Version von Qt 3, im Blick auf KDE, die vom freien Quellcode der Qt/X11-Variante portiert worden ist und somit auch vollständig GPL-lizenziert ist. Das Projekt wurde gestartet, um auch freie Software für Windows programmieren zu können. Mit dem Erscheinen von Qt 4 hat dieses Bestreben an Aufmerksamkeit verloren und wird nur noch mit kleineren Patches vom qtwin-Projekt weiter gepflegt. In Zukunft will sich das Projekt weiter um Patches zur Qt Open Source Edition von Qt Development Frameworks bemühen, so dass diese dann auch andere Compiler (Microsoft, Borland und Embarcadero Technologies) unterstützt.
  • Qt/Haiku – Für den offenen BeOS-Nachfolger Haiku gibt es eine Portierung von Qt4 im Rahmen eines Open-Source-Projekts. Aufgrund des hohen Entwicklungsaufwands gegenüber einer begrenzten Anzahl freier Programmierer wird nicht jedes neue Release von Trolltech auf diese Plattform portiert. Ziel des Projekts ist es, Qt-basierte Open Source-Anwendungen auf der Haiku-Plattform nutzbar zu machen und dadurch das Angebot nativer Anwendungen zu vergrößern.[36]
  • Qt/Amiga – Qt wurde in der Version 4.5 auf die Amiga-Plattform (AmigaOS 4.X) von einem einzigen Entwickler portiert.[37]
  • Qt-iPhone ̣– Das Ziel dieses Projekts ist es, Qt-Applikationen auf dem iPhone zum Laufen zu bringen. Das QtCore-Modul kompiliert bereits, das QtGUI-Modul ist noch in Arbeit.[38]

Design

Das Qt3-Build-System im Detail

Bibliotheksaufbau

Seit Version 4.0 ist die gesamte Bibliothek in Module gegliedert, wodurch kleinere und schnellere Programme möglich sind, da nur die verwendeten Module eingebunden werden müssen:

  • QtCore – Kern-Klassen, die von allen anderen Modulen genutzt werden
  • QtGui – Komponenten, die zur Gestaltung von grafischen Benutzeroberflächen (GUIs) dienen
  • QtNetwork – Klassen zur Netzwerk-Programmierung
  • QtOpenGL – Unterstützung von OpenGL
  • QtSql – Klasse zur Datenbankintegration mit SQL
  • QtScript – Klassen zur Verarbeitung von JavaScript
  • QtXml – Klassen zur Verwendung von XML
  • QtSvg – Klassen zur Verwendung von SVG-Dateien (seit 4.1)
  • QtDesigner – Klassen zur Erweiterung des Qt-Designers
  • QtUiTools – Klassen zur dynamischen Verwendung von Qt-Designer-Formularen in Anwendungen
  • QtAssistant – Unterstützung für Online-Hilfe
  • Qt3SupportKompatibilitätsklassen zu Qt 3
  • QtTest – Werkzeuge zum Testen der eigenen Anwendungen
  • WebKit – Klassen zur Darstellung von Webseiten (seit 4.4)
  • Phonon (KDE) – Klassen zur Einbindung von Multimedia-Inhalten (seit 4.4)

In der kommerziellen Edition sind noch die Module QAxContainer und QAxServer für die Unterstützung von ActiveX vorhanden. Auch enthalten die Unix-Varianten ein Modul namens QtDBus zur Interprozesskommunikation mit Hilfe des D-Buses.

Als weitere kommerzielle Bibliothek gibt es QSA – Qt Script for Applications, die es Entwicklern erlaubt ihre Qt-Anwendungen mit Skriptfunktionen zu erweitern. Es ist seit Qt 4.3 allerdings veraltet (Unterstützung endete am 1. Dezember 2008) und durch das in vielfacher Hinsicht bessere QtScript ersetzt worden, das ECMAScript/JavaScript-kompatibel ist. [39]

Programmierbeispiel

Das folgende Beispiel erzeugt ein Fenster mit einem Titel, der aufgrund der geringen Fenstergröße allerdings versteckt ist, einem Beschriftungsfeld (Label) und einer Schaltfläche (Button). Die Funktionen werden mittels „signals“ und „slots“ verbunden, so dass das Programm bei einem Klick auf den Button beendet wird. Die beiden Widgets werden anschließend im Hintergrund gezeichnet und das Fenster schließlich angezeigt. Das Beispielprogramm wird mit dem Aufruf von qmake -project && qmake && make innerhalb des Ordners kompiliert, in dem sich die Datei befindet.

Das Ergebnis des Beispielprogramms
#include <QtGui>
 
int main(int argc, char **argv) {
        // Eine QApplication stellt immer die Basis dar
        QApplication app(argc, argv);
 
        // Ein Fenster mit einem Titel erzeugen 
        QWidget window;
        window.setWindowTitle("Qt4-Example");
 
        // Ein Label mit einem Text erzeugen
        QLabel *label = new QLabel("Hello World!");
        label->setAlignment(Qt::AlignCenter);
 
        // Eine Schaltfläche mit Tastenkürzel Alt-E erzeugen, welcher die Anwendung beendet
        QPushButton *button = new QPushButton("&Exit");
        QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));
 
        // Sowohl das Label als auch die Schaltfläche horizontal ausrichten
        QVBoxLayout *layout = new QVBoxLayout;
        layout->addWidget(label);
        layout->addWidget(button);
        window.setLayout(layout);
 
        // Das Fenster anzeigen, die Anwendung starten und ihr Ergebnis (an das Betriebssystem) zurückliefern
        window.show();
        return app.exec();
}

Benutzeroberflächen können mit Qt entweder explizit programmiert oder mit dem Qt Designer gezeichnet werden.

Signal-Slot-Konzept

Eine Besonderheit ist die Verwendung von „signals“ und „slots“, die auf einfache Art und Weise die Kommunikation zwischen einzelnen Objekten ermöglicht. Bei den meisten anderen Klassenbibliotheken wird das durch Rückruffunktionen (callback function) realisiert. Aus der Sicht der Entwickler haben Rückruffunktionen zwar den Vorteil einer höheren Ausführungsgeschwindigkeit, jedoch erfordert das Signal-Slot-Konzept eine dynamische Prüfung der Aufrufparameter bezüglich ihres Typs.

Zur Nutzung des Signal-Slot-Konzepts ist daher die Verwendung des MOC-Präprozessors unbedingt notwendig, welcher die zur Prüfung nötigen Laufzeitinformationen den jeweiligen Klassen hinzufügt.

GUI-Simulation

Qt verwendete bis zur neuesten Version eine eigene Zeichenengine sowie Steuerelemente. Es simulierte das unterschiedliche Aussehen auf den verschiedenen Plattformen (GUI-Simulation). Das machte das Portieren einfacher, da nur sehr wenige Klassen in Qt von der verwendeten Plattform abhängig waren. Der Nachteil bestand allerdings darin, dass Qt das Aussehen jeder Plattform präzise nachahmen musste, was nicht immer möglich war. Seit Qt 4.0 gibt es allerdings die Möglichkeit (wie auch in vielen anderen Toolkits, z. B. wxWidgets oder SWT), die betriebssystemeigenen Routinen zum Zeichnen der Elemente zu verwenden. So gibt es nun die nativen QWindowsVistaStyle, QWindowsXPStyle und den QMacStyle. Diese „Styles“ funktionieren nur auf dem passenden Betriebssystem (und sind dort auch der Standard). Es gibt nach wie vor aber auch plattformunabhängige „Styles“, diese lassen sich einfach (z. B. per Kommandozeile) aktivieren.

Werkzeuge

Der Qt-Designer in der Version 4.3.4

Zusätzlich zu den Bibliotheken enthält Qt noch eine Reihe weiterer zusätzlicher Hilfsprogramme, von denen einige unersetzlich für die Arbeit mit Qt sind.

  • Folgende Programme werden vom Programmierer genutzt, um XML-Dateien unter einer komfortablen Benutzeroberfläche zu bearbeiten:
    • Qt-Designer – zum Erstellen von Formularen (*.ui (XML)) und Ressourcen-Dateien (*.qrc (XML))
    • Qt-Linguist – für Übersetzungen des Programms (*.ts (XML))
  • Folgende Programme ermöglichen eine einfache Übersetzung. Zur Steuerung wird die Qt-Projekt-Datei verwendet:
    • lupdate – Extrahiert aus allen Quellcodedateien die zu übersetzenden Strings (→ *.ts (XML))
    • lrelease – *.ts (XML) → *.qm
    • lconvert – Konvertiert zwischen *.po, *.ts, *.xlf und *.qm-Dateien
  • qmake – Erstellt mit der Qt-Projekt-Datei (*.pro) ein Makefile, welches den Erstellungsprozess steuert. Neben den üblichen Programmen wie Compiler und Linker werden auch folgende Programme verwendet:
    • moc – Meta-Object-Compiler, erstellt Meta-Informationen über Klassen des Programms (*.h → moc_*.cpp), siehe unten.
    • uic – Userinterface-Compiler, erstellt C++-Quellcode aus UI-Dateien (*.ui (XML) → ui_*.h)
    • rcc – Ressourcen-Compiler (*.qrc (XML) → qrc_*.cpp)

Für die Benutzung der Online-Dokumentation wird der Qt-Assistant verwendet, der auch in eigene Projekte eingebunden werden kann.

Meta-Object-Compiler

Der Meta-Object-Compiler, auch bekannt als moc, ist ein Werkzeug, welches die Header-Dateien eines Projektes untersucht und Meta-Informationen über Klassen und sonstige Programmteile sammelt. Das geschieht mit Hilfe von „Markierungen“, welche später vom Standard-Präprozessor entfernt werden. Aus diesen Informationen erstellt er wiederum C++-Code, in dem Funktionen implementiert werden, die ohne weitere Bibliotheken in C++ nicht vorhanden sind, wie Introspektion und das Signal-Slot-Konzept. Weitere Makros werden in selbst geschriebenen Header-Dateien expandiert, um deren Funktionsdeklarationen bereitzustellen.

Der Gebrauch eines zusätzlichen Werkzeuges wurde von einem Teil der C++-Programmierer kritisiert. Sie behaupteten, dass Qt-Programmierung keine C++-Programmierung mehr sei. Tatsächlich basiert die Implementation auf C-Makros, die bekanntlich nicht typsicher sind und den Namensraum verunreinigen. Aus der Sicht von Trolltech ist das aber nötig, um das Signal-Slot-Konzept elegant zu implementieren. Als Qt 1.x veröffentlicht wurde, waren die Compilerunterschiede bezüglich generischer Programmierung noch zu groß, als dass man sich auf Templates hätte verlassen können. Auch lässt sich die Verunreinigung des Namensraumes durch Verwendung des Makros QT_NO_KEYWORDS vermeiden.

Andere Anbindungen

  • Qt Jambi – Seit Juni 2007 existiert eine von Trolltech/Qt Software selbst entwickelte Version für Java. Diese wird aber seit Version 4.5 nicht mehr von Qt Software weiterentwickelt, der Community steht sie aber quelloffen zur Verfügung.[40]
  • PyQt – Das britische Unternehmen Riverbank Computing Ltd. hat unter diesem Namen eine Python-API entwickelt, die für Windows, Linux/Unix (X11) und Mac OS X, wie früher auch Qt selbst, wahlweise unter der GPL oder einer kommerziellen Lizenz erhältlich ist.
  • PySide – Nokia entwickelt selbst eine zu PyQt kompatible Python-Anbindung an Qt4 unter der LGPL, da PyQt nicht unter dieser Lizenz veröffentlicht wird.
  • PHP-Qt – Open-Source-Projekt zur Verwendung von Qt in PHP-Skripten.
  • QtRuby – Auf der KDE-Projektseite findet man Bindings für Ruby.
  • Qyoto – Anbindung von Qt und KDE-Bibliotheken zur Verwendung in C# und anderen .NET-Sprachen mittels Mono.
  • QtD – Anbindung von Qt an die Programmiersprache D.
  • Qt4Pas – Anbindung von Qt an die Programmiersprache Pascal.

Die folgende Tabelle zeigt die Anbindung an verschiedene Programmiersprachen[41] und den Implementierungsgrad der einzelnene Teilbibliotheken.

Qt-Sprach-Anbindungen
Programmier-
sprache
Name QtCore QtDesigner QtGui UIC QtNetwork QtOpenGL QtSql QtScript QtSvg QtTest QtUiTools QtWebKit QtXml Lizenz für
FLOSS
Lizenz für
proprietäre
Entwicklung
Ada QtAda Ja Ja Ja Ja Ja Ja Nein Nein Nein Nein[42] Ja Ja Ja Ja Nein Nein Nein Nein Nein Nein Ja Ja Nein Nein Ja Ja GPL Ja Ja
C++ Qt – natives C++ Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
C# & .NET Qyoto – Siehe Kimonein für KDE Ja Ja Ja Ja Ja Ja Ja Ja (uics) Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja
C# & .NET qt4dotnet Ja Ja Ja Ja WIP[43] Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
D QtD Ja Ja Nein Nein Ja Ja Nein Nein Ja Ja Ja Ja Nein Nein Nein Nein Ja Ja Nein Nein Nein Nein Ja Ja Ja Ja
Haskell Qt Haskell Nein Nein
Harbour hbqt Ja Ja Nein Nein Ja Ja Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein Nein GPL ähnlich LGPL
Java Qt Jambi Ja Ja Ja Ja Ja Ja Ja Ja (juic) Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
Lisp CommonQt – Bindings für Common Lisp Ja Ja Ja Ja Ja Ja Nein Nein Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja BSD BSD
Lua lqt – Bindings Ja Ja Ja Ja Ja Ja Nein Nein Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Nein Nein Ja Ja Ja Ja Ja Ja MIT MIT
Lua QtLua – Bindings und Skriptengine LGPL LGPL
Pascal FreePascal Qt4
Perl PerlQt4 Ja Ja Ja Ja Ja Ja Ja Ja (puic) Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja GPL Nein Nein
PHP PHP-Qt Ja Ja Ja Ja Ja Ja WIP Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
Python PyQt Ja Ja Ja Ja Ja Ja Ja Ja (pyuic) Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja GPL Ja Ja
Python PySide – von OpenBossa (ein Tochterunternehmen von Nokia). Ja Ja Ja Ja Ja Ja (pysideuic) Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
Python PythonQt Nein Nein LGPL LGPL
QML QML – QML ist seit Version 4.7 ein Teil von Qt Ja Ja Ja Ja Ja Ja Nein Nein Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
R qtbase Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja GPL Nein Nein
Ruby QtRuby Ja Ja Ja Ja Ja Ja Ja Ja (rbuic) Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja Ja LGPL LGPL
Tcl qtcl Nein Nein GPL Nein Nein
Programmier-
sprache
Name QtCore QtDesigner QtGui UIC QtNetwork QtOpenGL QtSql QtScript QtSvg QtTest QtUiTools QtWebKit QtXml Lizenz für
FLOSS
Lizenz für
proprietäre
Entwicklung

Beispiele

Prominente Beispiele, in denen das Qt-Toolkit zum Einsatz kommt, sind:

Siehe auch

Literatur

  • Jasmin Blanchette, Mark Summerfield: C++ GUI-Programmierung mit Qt 4, 2. Auflage, Addison-Wesley, Dezember 2008, ISBN 978-3827327291
  • Daniel Molkentin, André Pönitz: Qt 4. Einführung in die Applikationsentwicklung, 2. Auflage, Open Source Press, März 2010, ISBN 978-3937514994
  • Jürgen Wolf: Qt 4.6 - GUI-Entwicklung mit C++, 2. Auflage, Galileo Computing, Januar 2010, ISBN 978-3836215428
  • Helmut Herold: Das QT-Buch: Portable GUI-Programmierung unter Linux/Unix/Windows, 2. Auflage, Millin, August 2004, ISBN 978-3899901221

Weblinks

Wikibooks Wikibooks: Qt für C++-Anfänger – Lern- und Lehrmaterialien

Einzelnachweise

  1. Platforms – Qt. Abgerufen am 3. April 2010 (englisch).
  2. Qt Licensing. Abgerufen am 16. Februar 2011 (englisch).
  3. a b zur Aussprache siehe The Qt 4 Dance. Abgerufen am 3. April 2010 (englisch).
  4. http://www.heise.de/newsticker/meldung/Nokia-macht-mit-Qt-Project-Schritt-in-Richtung-echter-Open-Source-Entwicklung-1365415.html
  5. Jasmin Blanchette, Mark Summerfield: C++ GUI Programming with Qt 4, Seite XV, ISBN 0-13-187249-4
  6. Joseph Carter: Why Debian Doesn't Include KDE. 17. Juni 2000, abgerufen am 3. April 2010 (englisch).
  7. Trolltech to Extend Dual Licensing to Qt for Windows. 8. Februar 2005, abgerufen am 3. April 2010 (englisch).
  8. Nokia Corporation Qt GPL Exception Version 1.3. Abgerufen am 3. April 2010 (englisch).
  9. Oliver Lau: Mehr Open-Source-Lizenzen für Qt. In: heise online. 9. August 2007, abgerufen am 3. April 2010.
  10. Angela Meyer: Qt ist nun auch unter GPLv3 lizenzierbar. In: heise online. 19. Januar 2008, abgerufen am 3. April 2010.
  11. Nokia Communications: LGPL License Option Added to Qt. Abgerufen am 3. April 2010 (englisch).
  12. Qt 4.5, Qt Creator released. 3. März 2009, abgerufen am 3. April 2010 (englisch).
  13. http://blog.qt.nokia.com/2011/03/07/nokia-and-digia-working-together/
  14. http://www.digia.com/C2256FEF0043E9C1/0/405002251
  15. a b KDE Free Qt Foundation. Abgerufen am 3. April 2010 (englisch).
  16. Qt Software discontinues Qt Extended. 3. März 2009, abgerufen am 3. April 2010 (englisch).
  17. Golem.de 03.11.2011
  18. KDE on OpenSolaris
  19. Qt Applications and UI Framework for Haiku
  20. Qt 4 Application and UI Framework for eCS
  21. OS4Depot page for "First Alpha release of Qt 4.7 for AmigaOS Native"
  22. Experimental development of qt for the iPhone
  23. Qt-iPhone project
  24. Qt android port
  25. Qt webOS port
  26. Blog: Qt on the Palm Pre
  27. Blog: Qt on Amazon Kindle DX
  28. Michael Larabel (September 21, 2010): Qt Is Now Drawing On Wayland. Phoronix. Abgerufen am 11 October 2010.
  29. Trolltech Releases Qt 4.1. 20. Dezember 2005, abgerufen am 3. April 2010 (englisch).
  30. Trolltech Brings Style Sheets to Desktop Applications with Qt 4.2. 4. Oktober 2006, abgerufen am 3. April 2010 (englisch).
  31. Trolltech Releases Qt and Qtopia Core 4.3. 30. Mai 2007, abgerufen am 3. April 2010 (englisch).
  32. Qt 4.4 Framework Broadens Rich Application Development with Integration of Web Content and Portability to Mobile Devices. 6. Mai 2008, abgerufen am 3. April 2010 (englisch).
  33. Alexander Neumann: Qt 4.5 und Entwicklungsumgebung Qt Creator veröffentlicht. In: heise online. 3. März 2009, abgerufen am 3. April 2010.
  34. Nokia Releases Qt 4.6. 1. Dezember 2009, abgerufen am 3. April 2010 (englisch).
  35. Nokia Releases Qt 4.7. 21. September 2010, abgerufen am 26. September 2010 (englisch).
  36. http://qt-haiku.ru/
  37. http://qt.gitorious.org/~damato/qt/qt-amiga
  38. Roadmap von Qt-iPhone
  39. Moving from QSA to Qt Script. Abgerufen am 3. April 2010 (englisch).
  40. Qt Software to discontinue Qt Jambi after 4.5 release. 19. Februar 2009, abgerufen am 3. April 2010 (englisch).
  41. QT Language Bindings
  42. [1] Unterstützte Qt-Module in QtAda
  43. http://code.google.com/p/qt4dotnet/#Kneinwn_problems_/_missing_features

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Bibliothek [1] — Bibliothek nennt man jede zum Zweck privater oder öffentlicher Benutzung aufgehellte und geordnete Büchersammlung [30], S. 6, die als Privatbibliothek auf nur einen Raum beschränkt sein kann, als öffentliche Bibliothek stets eine größere… …   Lexikon der gesamten Technik

  • Bibliothek der Freien Universität Bozen — Logo der Bibliothek Gründung 1998 Bestand 203.102 Bibliothekstyp …   Deutsch Wikipedia

  • Bibliothek der Hansestadt Lübeck — Gründung: 1619 Gesamtbestand: 1.120.000 Bibliothekstyp: Stadtbibliothek …   Deutsch Wikipedia

  • Bibliothek des Deutschen Bundestages — Die Bundestagsbibliothek befindet sich im Marie Elisabeth Lüders Haus Gründung 1949 Bibl …   Deutsch Wikipedia

  • Bibliothek der Freien — Gründung 1993 Bibliothekstyp Spezialbibliothek Ort …   Deutsch Wikipedia

  • Bibliothek der Fachhochschule Hannover — Zentralbibliothek der Fachhochschule Hannover Gründung 1971 …   Deutsch Wikipedia

  • Bibliothek am Guisanplatz — Die Bibliothek am Guisanplatz (BiG, ehemals Eidgenössische Militärbibliothek, EMB) ist eine militärische Fachbibliothek in Bern. Am Guisanplatz neben der Kaserne Bern gelegen, gehört sie zum Generalsekretariat des Eidgenössischen Departementes… …   Deutsch Wikipedia

  • Bibliothek im Eis — Bibliothek im Eis, 2005 Die Bibliothek im Eis ist ein Kunstprojekt des Künstlers Lutz Fritsch. Sie stand seit Winter 2003/04 auf dem Eis in unmittelbarer Nähe zur antarktischen Forschungsstation Neumayer II. Nach der Auflösung von Neumayer II und …   Deutsch Wikipedia

  • Bibliothek der Universität Belgrad — Gründung 1844/1921 Bestand 1,5 Millionen Bibliothekstyp Univ …   Deutsch Wikipedia

  • Bibliothek & Information Deutschland — Bibliothek Information Deutschland (BID) ist die Bundesvereinigung Deutscher Bibliotheks und Informationsverbände mit Sitz in Berlin. Bis zum 1. Juli 2004 trug sie den Namen Bundesvereinigung Deutscher Bibliotheksverbände e.V. (BDB). Die… …   Deutsch Wikipedia

  • Bibliothek und Information Deutschland — Bibliothek Information Deutschland (BID) ist die Bundesvereinigung Deutscher Bibliotheks und Informationsverbände mit Sitz in Berlin. Bis zum 1. Juli 2004 trug sie den Namen Bundesvereinigung Deutscher Bibliotheksverbände e.V. (BDB). Die… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”