Anzeigegulli:Toolbox |
gulli:lexikon - Alle Begriffe der Untergrund-SzeneTipp: Benutze die Suche, um weitere Begriffe im gulli:lexikon nachzuschlagen.
Qt ist eine Klassenbibliothek fĂŒr die plattformĂŒbergreifende Programmierung grafischer BenutzeroberflĂ€chen fĂŒr viele Programmiersprachen. 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 proprietĂ€ren Lizenz, welche allerdings nur benötigt wird, falls mit der Umgebung Produkte entwickelt werden sollen, die unter keiner freien Lizenz stehen (siehe Duales Lizenzsystem), zur VerfĂŒgung. Qt verwendet eine Erweiterung der Programmiersprache C++. Es gibt auch Implementierungen fĂŒr Python (PyQt), Ruby (QtRuby), C# (Qyoto-Projekt), Java (Qt Java), PHP (PHP-Qt) und Perl (PerlQt), die allerdings nicht von Trolltech betreut werden. Weiterhin existiert eine Qt-Anbindung fĂŒr Java von Trolltech namens âQt Jambiâ.
GeschichteAnfĂ€nge und NamensentwicklungHaavard 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.<ref>Jasmin Blanchette, Mark Summerfield: C++ GUI Programming with Qt 4, Seite XV, ISBN 0131872494</ref> 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. LizenzierungKontroverse 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 Free-Software-Gemeinde Sorgen, dass ein so wichtiger Teil des Systems unter kommerzieller Kontrolle stand. Dies 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<ref>Joseph Carter: âWhy Debian Doesn't Include KDEâ (englisch) bei Freshmeat.net</ref>, Ă€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<ref>Trolltech: âTrolltech to Extend Dual Licensing to Qt for Windowsâ</ref>. Dies 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 der Firma 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. <ref>Trolltech GPL Exception version 1.0</ref> <ref>Heise Newsticker vom 9. August 2007</ref>. Trolltech hat angekĂŒndigt, weitere Versionen von Qt auch unter der dritten Version der GPL zu veröffentlichen.<ref>heise open - Qt ist nun auch unter GPLv3 lizenzierbar</ref> Absicherung ĂŒber die KDE Free Qt FoundationNoch 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. Versionen
VariantenEs 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:
Aktuelle VersionTrolltech hat mit Qt 4 am 28. Juni 2005 fĂŒnf neue Technologien eingefĂŒhrt:
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.<ref>Trolltech Releases Qt 4.1</ref>. 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.<ref>Trolltech Brings Style Sheets to Desktop Applications with Qt 4.2</ref> 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. Des Weiteren wurde eine ECMAScript-Engine namens QtScript und die UnterstĂŒtzung von SSL-Verbindungen hinzugefĂŒgt.<ref>Trolltech Releases Qt and Qtopia Core 4.3</ref> Qt 4.4 wurde am 6. Mai 2008 veröffentlicht. <ref>http://trolltech.com/company/newsroom/announcements/press.2008-05-02.5256347247 Qt 4.4 Framework Broadens Rich Application Development with Integration of Web Content and Portability to Mobile Devices</ref> Editionenvon TrolltechEs sind folgende vier Editionen von Qt erhĂ€ltlich:
Die ersten drei Editionen sind proprietĂ€r und werden unter einer kommerziellen Lizenz veröffentlicht. Im Gegensatz zu dieser 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, und im Falle der Qt/Windows-Version auch eine Integration in Microsoft Visual Studio. Die Qt Open Source Edition enthĂ€lt nur UnterstĂŒtzung fĂŒr den C++-Compiler der GCC (mit Ausnahme von Qt/Windows, welches seit Qt 4.3.2 auch nativ den Microsoft Visual C++ Compiler ohne Patches unterstĂŒtzt<ref>http://labs.trolltech.com/blogs/2007/09/18/qtwindows-open-source-edition-to-support-vs-express</ref>). Auch eine Integration in die freie Entwickungsumgebung Eclipse ist vorhanden, welche mit Qt-Versionen ab 4.1 zusammenarbeitet.<ref>Qt Eclipse Integration Downloads â Trolltech</ref> von anderen AnbieternDa es sich bei Qt um Freie Software handelt, gibt es auch Editionen anderer Anbieter:
DesignBild:Qt built system.svg Das Qt3-Build-System im Detail BibliotheksaufbauSeit 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:
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, welches Entwicklern erlaubt ihre Qt-Anwendungen mit Skriptfunktionen zu erweitern. Es ist seit Qt 4.3 allerdings veraltet (UnterstĂŒtzung endet am 1. Dezember 2008) und durch das in vielfacher Hinsicht bessere QtScript ersetzt worden, welches ECMAScript/JavaScript kompatibel ist. <ref>http://doc.trolltech.com/4.3/porting-qsa.html</ref> Signal-Slot-KonzeptEine 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, da diese keine statische TypprĂŒfung ermöglichen. GUI-EmulationQt verwendete bis zur neusten Version eine eigene Zeichenengine sowie Steuerelemente. Es emulierte 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 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) direkt plattformeigene 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, und diese lassen sich einfach (z.B. per Kommandozeile) aktivieren. WerkzeugeZusĂ€tzlich zu den Bibliotheken enthĂ€lt Qt noch eine Reihe weiterer zusĂ€tzlicher Tools, die teilweise unersetzlich fĂŒr die Arbeit mit Qt sind. Bild:Qt-Designer-4-3-4.png Der Qt-Designer in der Version 4.3.4
FĂŒr die Benutzung der Online-Dokumentation wird der Qt-Assistant verwendet, der auch in eigene Projekte eingebunden werden kann. Meta-Object-CompilerDer 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. Dies geschieht mit Hilfe von âMarkierungenâ, welche spĂ€ter vom Standard-PrĂ€prozesser 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. 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. Andere Implementierungen
BeispieleProminente Beispiele, in denen das Qt-Toolkit zum Einsatz kommt, sind:
Siehe auchLiteratur
Weblinks<imagemap>
Image:Wikibooks-logo.svg|16px|Wikibooks default b: desc none</imagemap> Wikibooks: Qt fĂŒr C++ AnfĂ€nger â Lern- und Lehrmaterialien
Quellen<references/>ar:ÙÙÙ ŰȘÙ ca:Qt cs:Qt (knihovna) en:Qt (toolkit) es:Qt (biblioteca) fi:Qt fr:Qt hu:Qt id:Qt toolkit it:Qt (toolkit) ja:Qt ko:Qt (íŽí·) nl:Qt-toolkit nn:Qt no:Qt pl:Qt pt:Qt ro:Qt ru:Qt sv:Qt tr:Qt uk:Qt zh:Qt Dieser Artikel basiert auf dem Artikel Qt (Bibliothek) aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar. |
Weitere Tipps | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||