[[Vorlage(Archiviert, "Qt4 wird seit Dezember 2015 nicht mehr unterstützt. Große Teile des Artikel und insbesondere die praktischen Beispiele am Ende beziehen sich auf Qt 4. Aktuelle Informationen zu Qt sind im Wikiartiikel [:Qt:] zu finden.")]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Editor: Einen Editor öffnen] }}} [[Inhaltsverzeichnis(1)]] [[Bild(./logo-qt.png, align=left)]] [http://qt-project.org/ Qt] {en} ist eine sehr umfangreiche C++ Klassenbibliothek für die Entwicklung von Anwendungen. Den größten Bekanntheitsgrad hat Qt als Bibliothek zur Erstellung von grafischen Benutzeroberflächen, jedoch bringt Qt eine Vielzahl weiterer Module mit sich, die die Programmierung vereinfachen (bspw. Netzwerkprogrammierung, Datenbankanbindung, XML, OpenGL, etc.). Außerdem ist man beim Einsatz von Qt nicht auf C++ beschränkt. Es existieren [#Weitere-Programmiersprachen Anbindungen] zu zahlreichen Programmiersprachen. So ermöglicht zum Beispiel Qt Jambi die Programmierung in [:Java:] unter Verwendung von Qt. Mit Hilfe von Qt ist die Erstellung plattformübergreifender Anwendungen möglich. Neben den Unix-Derivaten mit [:XServer:X11] als Darstellungsserver werden u.a. Windows, Mac OS X und Symbian unterstützt. Dabei ist hervorzuheben, dass Qt für jede Plattform das gewohnte native [wikipedia:Look_and_Feel:Look & Feel] mitbringt. Qt wurde ursprünglich von Qt Development Frameworks (bis Mitte 2008 noch Trolltech SA), einer Tochterfirma von Nokia, entwickelt und unter einem dualen Lizenzsystem freigegeben. Der Quellcode steht unter verschiedenen Open Source Lizenzen, wie z.B. der [wikipedia:GNU_General_Public_License:General Public License (GPL)] und kann somit frei benutzt werden. Seit Qt 4.5, das in [:Jaunty:Ubuntu 9.04] erstmals zum Einsatz kam, wird neben der kommerziellen Lizenz und der GPL zusätzlich auch eine LGPL-Variante angeboten. Seit Ende Oktober 2011 ist das [http://qt-project.org/ Qt Project] {en} die neue Heimat. Die Benutzeroberfläche [:KDE:] verwendet seit jeher Qt (siehe [:Geschichte_von_KDE:Geschichte von KDE]). Die aktuelle Version KDE 4 verwendet Qt 4 und konnte daher (nach einer Lizenzänderung durch Trolltech) auch auf Windows und Mac OS X portiert werden. An dieser Stelle soll auch ein weit verbreiteter Irrtum ausgeräumt werden: Wenn ein Programm Qt zur Gestaltung der grafischen Oberfläche verwendet, hat das rein gar nichts mit KDE zu tun. Es existieren allerdings Qt-Programme, die zusätzlich noch KDE-Bibliotheken verwenden und dann tatsächlich KDE voraussetzen. Dies ist teilweise auch eine Sache der Paketierung durch die jeweiligen Distributionen, da manche Programme wie z.B. [:Marble:] KDE-Abhängigkeiten nicht zwingend voraussetzen. Programme ohne Abhängigkeit von KDE-Bibliotheken bzw. mit einer optionalen Qt-Oberfläche sind über die [:Kategorie/Qt:] aufzufinden. = Installation = Qt verfügt über eine Vielzahl von Anbindungen an verschiedene Programmiersprachen. Für eine Übersicht sei an dieser Stelle auf [wikipedia_en:List_of_language_bindings_for_Qt_4:Sprachanbindungen Qt 4] und [wikipedia_en:List_of_language_bindings_for_Qt_5:Sprachanbindungen Qt 5] verwiesen. Das folgende Paket muss installiert [1] werden, um C/C++-Anwendungen mit Qt zu entwickeln. === Qt 5 === {{{#!vorlage Paketinstallation qt5-default }}} === Qt 4 === {{{#!vorlage Paketinstallation qt4-default }}} = Benutzung = == Editor == Anwendungen können in einem beliebigen Editor [2] geschrieben werden, jedoch empfiehlt sich der Einsatz einer [:Entwicklungsumgebungen:Entwicklungsumgebung]. Für die Entwicklung von C++-Anwendungen gibt es speziell auf Qt ausgerichtete Programme: * [:Qt_Creator:] - Das "Allround-Talent" für die Qt-Programmierung (Editor, bindet [:Qt_Designer:] ein, Projekt- und Versionsverwaltung, Hilfesystem, etc.). * [:QDevelop:] - Schlanke Qt-Entwicklungsumgebung * [:Entwicklungsumgebungen#KDevelop:KDevelop] - Die [wikipedia:Integrierte_Entwicklungsumgebung:IDE] des KDE-Projekts. Ähnlich komplex wie Qt Creator, jedoch nicht ausschließlich auf Qt ausgerichtet und ohne Designer. {{{#!vorlage Tabelle [[Bild(qtdesigner.jpg, x150)]] <:>[[Bild(qtlinguist.jpg, x150)]] +++ <:>Qt Designer <:>Qt Linguist }}} == Designer == Qt verfolgt das [wikipedia:Model_View_Controller:Model View Controller Konzept]. Da die Klasse für die Oberfläche keine Logik enthält, ist es nicht erforderlich - wenn auch möglich - die Oberfläche im Quellcode zu schreiben. Mit Hilfe von [:Qt_Designer:] erstellte Oberflächen sind an keine Programmiersprache gebunden, sondern können ohne Änderung bspw. sowohl in einer C++-, als auch einer Python-Anwendung verwendet werden. Der Designer kann als eigenständige Anwendung gestartet werden, ist aber zusätzlich auch im [:Qt_Creator:] integriert. == Übersetzung == Qt unterstützt Entwickler beim Übersetzen ihrer Anwendungen in beliebige Sprachen. Hierbei hilft das Werkzeug "Qt Linguist", das im folgenden Paket enthalten ist: === Qt 5 === {{{#!vorlage Paketinstallation qttools5-dev-tools }}} === Qt 4 === {{{#!vorlage Paketinstallation qt4-dev-tools }}} Starten kann man Qt Linguist über ''"Entwicklung -> Übersetzung -> Qt 4 Linguist"''. Die Anwendung listet alle übersetzbaren Zeichenketten auf und zeigt ebenfalls die entsprechende Stelle im Quellcode bzw. auf der grafischen Benutzeroberfläche. [[Vorlage(Bildunterschrift, qtassistant.jpg, 180, "Qt Assistant", right)]] == Dokumentation == Die Dokumentation von Qt ist sehr umfangreich. Sie lässt sich mit dem Programm "Qt Assistant" durchstöbern, das im folgenden Paket enthalten ist: === Qt 5 === {{{#!vorlage Paketinstallation qttools5-dev-tools qt5-doc }}} === Qt 4 === {{{#!vorlage Paketinstallation qt4-dev-tools qt4-doc }}} Das Programm wird über ''"Entwicklung -> Qt 4 Assistant"'' aufgerufen. Es enthält Anleitungen zum "Qt Assistant", "Qt Designer", "Qt Linguist" sowie QMake und die gesamte Qt-Referenz. Über den Reiter ''"Suchen"'' kann man alle Anleitung nach beliebigen Begriffen durchsuchen. Qt Assistant ist eine eigenständige Anwendung, welche zusätzlich auch im [:Qt_Creator:] integriert ist. Alternativ bietet der Browser [:Konqueror:] die Möglichkeit, über das Webkürzel ''"qt:klassenname"'' direkt zur Dokumentation von ''"klassenname"'' zu navigieren. == Anwendungsbeispiele == Ein Blick auf die Demos und Beispiele der Entwickler lohnt sich ebenfalls. Dort kann man in Qt 4 geschriebene Programme testen und zugleich die Quelltexte durchsuchen. Zu jedem Thema gibt es ein Anwendungsbeispiel. Zuerst muss das folgende Paket installiert werden: {{{#!vorlage Paketinstallation qt4-demos }}} Erreichbar sind die Beispiele und Demos unter * '''/usr/lib/qt4/demos''' * '''/usr/lib/qt4/examples''' == qmake == Qmake ist ein Generator für [:Makefile:Makefiles]. Mit dem folgenden Befehl kann eine Projektdatei ('''.pro''') erstellt werden, die den gleichen Namen trägt wie der Ordner, in dem sich die Dateien befinden: {{{#!vorlage Befehl qmake-qt4 -project qmake-qt4 }}} Eine Übersicht der Parameter, die in die Projektdatei eingefügt werden können (bspw. `QT += network` für Netzwerkprogrammierung), findet sich in der offiziellen Dokumentation. Nachdem man das "Makefile" erstellt hat, kann man seine Anwendung kompilieren: {{{#!vorlage Befehl make }}} = Das erste Programm = Natürlich kann hier keine erschöpfende Einführung in Qt und die verschiedenen von Qt verwendeten Konzepte gegeben werden. An dieser Stelle sei auf [#Links externe Literatur] verwiesen. Im folgenden wird die Erstellung einer einfachen Qt 4 Anwendung gezeigt. == helloworld.cpp == {{{#!code cpp #include #include int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.show(); return app.exec(); } }}} == Kompilieren und Ausführen == {{{#!vorlage Befehl qmake-qt4 -project qmake-qt4 make ./helloworld }}} = Problembehebung = == Aussehen unter GTK anpassen == Hierzu gibt es ausführliche Informationen im Wiki-Artikel [:GTK+ Anwendungen unter KDE:]. [[Vorlage(Bildunterschrift, qtconfig-qt4.png, 173 "qtconfig-qt4", right)]] Wer Qt-4-Programme unter einer auf [:GTK:] basierenden Desktop-Umgebung einsetzt, kann das Programm '''qtconfig-qt4''' zur Anpassung des Aussehens nutzen. Dazu installiert man folgendes Paket: {{{#!vorlage Paketinstallation qt4-qtconfig, universe }}} Nach dem Start via Terminal: {{{#!vorlage Befehl qtconfig-qt4 }}} wählt man als ''"GUI-Stil"'' die Option ''"GTK+"'' aus. Die getroffenen Einstellungen gelten für alle auf Qt4 basierenden Programme. Für Qt-5-Programme muss dagegen das folgende Paket installiert sein: [1] {{{#!vorlage paketinstallation qt5-style-plugins, universe }}} Und eine [:Umgebungsvariable:] gesetzt werden: {{{ QT_QPA_PLATFORMTHEME=gtk2 }}} Damit ein GTK-Thema von Qt übernommen werden kann, muss dieses Thema GTK in Version 2 unterstüzen. == Winzige Schriften in Qt-Anwendungen == Sollte die Schrift einer Programmoberfläche sehr klein dargestellt werden, sollte man in den Einstellungen der [:Desktop:Desktop-Umgebung] nachsehen, welcher [wikipedia:Punktdichte:DPI]-Wert für die Bildschirmschriftart eingestellt ist. Unter Umständen haben einige Qt-Anwendungen Probleme mit anderen DPI-Einstellungen als '''96'''. = Links = * [http://qt-project.org/ Projektseite] {en} * [http://qtcentre.org/ Qt Centre] {en} - Qt Community Seite * [http://qtforum.de/forum/ Deutschsprachiges Qt-Forum] {de} * [http://www.proggen.org/doku.php?id=frameworks:qt:start Deutsches Qt-Tutorial auf proggen.org] {de} * [http://techbase.kde.org/index.php?title=Development/Tutorials/Using_Qt_Designer_%28de%29 Qt Designer Tutorial] {de} * [wikibooks:Qt_für_C++-Anfänger:Qt für C++ Anfänger] {de} * [http://www.qt-apps.org/ Qt-Apps.org] {en} - Softwareverzeichnis von Qt-Applikationen * [:Kategorie/Qt:Programme] im hiesigen Wiki, die auf Qt basieren #tag: KDE, Programmierung, Qt