Das Kefk Network Wiki befindet sich im Testbetrieb.
Qt (Bibliothek)
Aus Kefk.
| Bild:Qt logo.svg Qt | |
|---|---|
| Entwickler: | Trolltech |
| Aktuelle Version: | 4.2.3 (9. März 2007) |
| Betriebssystem: | Unix, Linux (mit X Window System - X11), Mac OS X, Windows |
| Kategorie: | Klassenbibliothek |
| Lizenz: | Duales Lizenzsystem (Proprietär und GPL/QPL) |
| Deutschsprachig: | nein |
| Website: | Trolltech |
Qt ist eine Klassenbibliothek für die plattformübergreifende Programmierung grafischer Benutzeroberflächen unter C++. Qt wird besonders in den Bibliotheken des K Desktop Environments verwendet.
Qt wird von der norwegischen Firma Trolltech (früher Quasar Technologies) entwickelt, und ist für verschiedene Betriebssysteme bzw. Grafikplattformen wie X11 (Unix-Derivate), Mac OS X, Windows und als PDA-Version erhältlich. Neben der Entwicklung von grafischen Benutzeroberflächen bietet Qt umfangreiche Funktionen zur Internationalisierung sowie Datenbankfunktionen und XML-Unterstützung an.
Die Klassenbibliothek steht sowohl unter der GNU General Public License (GPL) als auch unter einer kommerziellen Lizenz, welche allerdings nur benötigt wird, falls mit der Umgebung Produkte entwickelt werden sollen, die nicht wiederum unter einer freien Lizenz stehen. (siehe Duales Lizenzsystem)
Qt verwendet eine Erweiterung der Programmiersprache C++. Es gibt auch Implementierungen für Python, Ruby, C, C#, Java und Perl, die allerdings nicht von Trolltech betreut werden.
Inhaltsverzeichnis |
Geschichte
Anfänge und Namensentwicklung
Haavard Nord und Eirik Chambe-Eng (die ursprünglichen Entwickler von Qt und mittlerweile CEO und Präsident von Trolltech) starteten die Entwicklung von Qt im Jahre 1991, drei Jahre bevor die Firma Quasar Technologies gegründet wurde. Später änderten sie den Namen in Troll Tech und dann in Trolltech.
Ursprünglich stand die Abkürzung Qt für Quasar toolkit. Quasare sind die dauerhaft am stärksten strahlenden Objekte im Universum (sie werden nur kurzzeitig von den Gammablitzen übertroffen). Durch den Bezug auf solche unvorstellbar energieintensiven Objekte sollte wohl der ehrgeizige Anspruch der Entwickler zum Ausdruck kommen, ein bedeutendes Programmierwerkzeug zu schaffen, weswegen ihre Firma Trolltech wohl auch ursprünglich Quasar Technologies hieß. Eine andere Herleitung des Namens Qt ist, dass das Q nach Haavard Nords Geschmack besonders schön in seinem Emacs anzusehen war und das t an Xt (das X-Toolkit) erinnerte.[1]
Heute hat die Abkürzung Qt jedoch nicht mehr diese Bedeutung und wird offiziell wie das englische Wort cute ausgesprochen. Dieses Wort soll die Ansicht der Entwickler ausdrücken, dass der Quelltext und die API von Qt eben cute sei, 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, machten sich ein großer Teil der Open Source- und Free Software-Gemeinde Sorgen, dass ein so wichtiger Teil des Systems unter kommerzieller Kontrolle stand. Dies hatte zwei Auswirkungen. Erstens wurde das Harmony-Toolkit entwickelt, welches die Funktionen von Qt exakt kopieren sollte, aber 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, welches Freie Software war, aber in C programmiert ist.
Bis Version 1.45 verwendete Trolltech die FreeQt-Licence für Qt. Diese war weder Open Source noch Freie Software. 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[2], ä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[3]. Dieses bestätigte sich, als im Juni 2005 Trolltech eine einheitliches Duales Lizenzsystem für alle unterstützten Plattformen veröffentlichte. Heute gibt es für jede Plattform proprietäre Editionen und die Open Source Edition (GPL-Edition).
Absicherung über die KDE Free Qt Foundation
Noch bevor Qt doppellizenziert wurde, wurde 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 Majorität 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.
Varianten
Es gibt derzeit die folgenden Varianten des Qt-Toolkits, die auf verschiedenen Plattformen laufen. Sie sind alle sowohl unter der GPL als auch unter einer proprietären-Lizenz verfügbar, wobei Trolltech in den GPL-Varianten jedoch nur Unterstützung für den ebenfalls freien C++-Compiler der GNU Compiler Collection anbietet:
- Qt/X11 – Qt für das X Window System, welches unter Unix und Unix-Derivaten wie GNU/Linux läuft.
- Qt/Windows – Qt für Microsoft Windows.
- Qt/Mac – Qt für Apple Mac OS X - benutzt das Carbon-Toolkit von Apple.
- Qtopia Core (ehemals Qt/Embedded) – Mit Qt/Embedded stellte Trolltech eine Variante vor, die den Linux-Framebuffer statt des X-Window-Systems benutzt. Diese wird vor allem in eingebettenen Geräten auf Linux-Basis eingesetzt (PDAs, Smartphones und Embedded Linux). Bekannt wurde sie vor allem durch den Zaurus-PDA von Sharp, der auf Qt/Embedded und deren grafische Oberfläche Qtopia aufsetzte.
Aktuelle Version
Trolltech hat mit Qt 4 am 28. Juni 2005 fünf neue Technologien eingeführt:
- Tulip – Ein Satz neuer Container-Klassen
- Interview – Eine Modell-Ansicht-Architektur für elementbasierte Ansichten.
- Arthur – Ein neues 2D-Zeichenframework
- Scribe – Unicode-Textausgabe mit öffentlicher API zur Unterstützung von einfachen Textlayouts.
- MainWindow – Eine modernere Hauptfenster-Architektur, die Symbolleisten, Menüs und andockbare Fenster ermöglicht.
Editionen
von Trolltech
Es sind folgende vier Editionen von Qt erhältlich:
- Qt Console – für die Entwicklung von Programmen ohne GUI
- Qt Desktop Light – es fehlen Netzwerk- und Datenbankunterstützung
- Qt Desktop – die vollständige Bibliothek
- Open Source Edition – die vollständige Bibliothek zur Entwicklung von Open Source-Anwendungen
Die ersten drei Editionen sind proprietär und werden unter einer kommerziellen Lizenz veröffentlicht. Dem entgegengesetzt ist die Open Source Edition unter der GPL erhältlich. Alle kommerziellen Editionen unterstützen eine große Anzahl von Compilern einschließlich des GCC C++-Compilers. Im Falle der proprietäten Qt/Windows-Version auch die IDE von Microsoft Visual Studio. Die Qt Open Source Edition enthält nur Unterstützung für den C++-Compiler der GCC.
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 wird sich das Projekt weiter um Patches zur Qt Open Source Edition von Trolltech bemühen, so dass diese dann auch andere Compiler (Microsoft und Borland) unterstützt.
Design
Bibliotheksaufbau
Seit Version 4.0 ist die gesamte Bibliothek in Module gegliedert, welches kleinere und schnellere Programme möglich macht, 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
- QtSvg – Klassen zur Verwendung von SVG-Dateien
- QtXml – Klassen zur Verwendung von XML
- QtDesigner – Klassen zur Erweiterung des Qt-Designers
- QtUiTools – Klassen zur Verwendung von Qt-Designer-Form in Anwendungen
- QtAssistant – Unterstützung für Online-Hilfe
- Qt3Support – Kompatiblitätsklassen zu Qt 3
- QtTest – Werkzeuge zum Testen der eigenen Anwendungen
Zusätzlich zu den Bibliotheken enthält Qt noch eine Reihe weiterer zusätzlicher Tools, die teilweise unersetzlich für die Arbeit mit Qt sind:
- Qt-Designer – zum Erstellen grafischer Oberflächen für Qt und Qt/Embedded
- Qt-Assistant – für die Online-Dokumentation
- Qt-Linguist, lupdate und lrelease – für Übersetzungen des Programms
- qmake – (siehe qmake)
- moc – Erstellt Meta-Informationen über Klassen des Programms
- uic – Erstellt C++-Quellcode aus UI-Dateien
- rcc – Ressourcen-Compiler
GUI-Emulation
Qt benutzt seine eigene Zeichenengine und Steuerelemente. Es emuliert das unterschiedliche Aussehen auf den verschiedenen Plattformen (GUI-Emulation). Das machte das Portieren einfacher, da nur sehr wenige Klassen in Qt von der verwendeten Plattform abhängig sind. Der Nachteil war aber, dass Qt das Aussehen jeder Plattform präzise nachahmen musste, was nicht immer möglich war. In der neusten Version von Qt hat man von diesem Konzept Abstand genommen und verwendet, wie viele andere Toolkits (wxWidgets oder SWT), auch die plattformeigenen Elemente zur Implementierung.
Meta Object Compiler
Der Meta Object Compiler, auch bekannt als moc, ist ein Werkzeug, welches die Quellcode-Dateien eines Projektes untersucht und Meta-Informationen über Klassen und sonstige Programmteile sammelt. Aus diesen Informationen erstellt er wiederum C++-Code, in der Funktionen implementiert werden, die ohne weitere Bibliotheken in C++ nicht vorhanden sind, wie Introspektion und das Signal-Slot-Konzept.
Der Gebrauch eines zusätzlichen Werkzeuges wurde von einem Teil der C++-Programmierer kritisiert. Sie behaupteten, dass Qt-Programmierung keine C++-Programmierung mehr sei. In Wahrheit basiert die Implementation auf C-Makros, die bekanntlich nicht typsicher sind und den Namensraum verunreinigen. Dies ist aus der Sicht von Trolltech 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, wie dies zum Beispiel im Boost-Toolkit der Fall ist.
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 dies durch Rückruffunktionen (callback function) realisiert. Aus der Sicht der Entwickler haben Rückruffunktionen zwar den Vorteil einer höheren Ausführungsgeschwindigkeit, jedoch Nachteile bei der Pflege der Programme.
Andere Implementierungen
- PyQt – Die britische Firma Riverbank Computing Ltd. hat unter diesem Namen eine Python-API entwickelt, die zu ähnlichen Bedingungen wie Qt erhältlich ist (unter der GPL kostenlos für Linux, ansonsten unter einer kommerziellen Lizenz).
- Qt Jambi – Seit 2006 Previewversion für Java.
- PHP-Qt – OpenSource Projekt
Beispiele
Prominente Beispiele, in denen das Qt-Toolkit zum Einsatz kommt, sind:
- die freie Desktopumgebung „K Desktop Environment“
- der Opera-Webbrowser
- die VoIP-Software Skype (nur für Linux)
- das Bildbearbeitungsprogramm Photoshop Album von Adobe
- das Videoschnittprogramm MainActor der Firma MainConcept sowie
- die Office-Bibliothek von den Verlagen Brockhaus und Langenscheidt
- der virtuelle Globus Google Earth
Siehe auch
Literatur
- Daniel Molkentin: Qt 4 - Einführung in die Applikationsentwicklung, ISBN 3-937514-12-0
- Jasmin Blanchette, Mark Summerfield: C++ GUI-Programmierung mit Qt 4, ISBN 3-8273-2464-5
Weblinks
- Qt-4.2-Dokumentation (englisch)
- Qt Java (englisch)
- The Independent Qt Tutorial (englisch)
- The GPL Versus Qt "War" (19.2.3) (englisch)
- How Qt's proprietary license agreement works (englisch)
- Qt/Windows Free Edition und Advanced compiler support (ACS) für Qt 4
- Links zum Thema „Qt“ im Open Directory Project (englisch)
Quellen
- ↑ Jasmin Blanchette, Mark Summerfield: C++ GUI Programming with Qt 4, Seite XV, ISBN 0131872494
- ↑ Joseph Carter: „Why Debian Doesn't Include KDE“ (englisch) bei Freshmeat.net
- ↑ Trolltech: „Trolltech to Extend Dual Licensing to Qt for Windows“
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort Qt_%28Bibliothek%29, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
