About Qt/de
Was ist Qt?
Qt ist ein Framework, dass die plattformunabhängige Entwicklung für Desktop-, Embedded- und Mobilanwendungen unterstützt. Unterstützte Plattformen sind Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS und weitere.
Qt ist keine eigenständige Programmiersprache. Es ist ein in C++ geschriebenes Framework. Ein Präprozessor, der MOC (Meta-Object Compiler), wird eingesetzt, um die Programmiersprache C++ um Features wie z.B. Signals und Slots zu erweitern. Vor der Kompilierung parst der MOC die Quelldateien, die in C++ mit Qt-Erweiterungen geschrieben sind, und generiert aus ihnen C++-Standard-konforme Quelldateien. Deshalb kann das Framework selbst und Anwendungen bzw. Bibliotheken, die es benutzen, von jedem C++-Standard-konformen Compiler wie Clang, GCC, ICC, MinGW und MSVC kompiliert werden.
Die Qt Company und das Qt-Projekt
Die Entwicklung von Qt begann 1990 durch die norwegischen Programmierer Eirik Chambe-Eng und Haavard Nord. Ihre Firma, Trolltech, die Qt-Lizenzen vertrieb und Support anbot, durchlief mehrere Übernahmen im Laufe der Jahre. Ehemals Trolltech heißt nun die Qt Company und ist eine hundertprozentige Tochtergesellschaft von Digia Plc., Finnland. Obwohl die Qt Company der Haupttreiber hinter Qt ist, wird Qt nun von einer größeren Allianz entwickelt: dem Qt-Projekt. Es besteht aus vielen Firmen und Einzelpersonen rund um den Globus und folgt einem leistungsorientierten Kontrollsystem.
Jeder, der möchte, egal ob Einzelpersonen oder Firmen, kann sich hier anschließen. Es gibt viele Möglichkeiten zum Qt-Projekt beizutragen, z.B. indem man Code oder Dokumentation für das Framework schreibt, Fehler (Bugs) meldet, anderen Nutzern im Forum hilft oder die Seiten dieses Wikis pflegt (siehe auch https://qt.io/contribute/).
Lizenz
Qt is verfügbar unter verschiedenen Lizenzen: Die Qt Company verkauft kommerzielle Lizenzen, jedoch ist Qt auch als freie Software unter verschiedenen Versionen der GPL und der LGPL (Lizenz-FAQs) verfügbar.
Build-System
Obwohl jedes Build-System mit Qt genutzt werden kann, bringt Qt durch qmake sein eigenes Build-System mit. Es ist ein plattformunabhängiges Frontend für plattform-native Build-System wie GNU Make, Visual Studio und Xcode.
CMake ist ebenfalls eine beliebte Alternative um Qt-Projekte zu bauen; Support dafür ist in Qt4 seit Jahren integriert und Qt5 bot bereits früh Support dafür an.
Seit kurzem gibt es einen neuen Mitspieler: die Qt Build-Suite auch bekannt als Qbs. Qbs ist ein QML-basiertes Build-System, das ebenfalls Unterstützung für Javascript bietet. Dieses Build-System bietet nicht nur die Möglichkeit Projekte zu bauen, sondern auch wie cmake die Fähigkeit Packages zu erstellen.
Integrierte Entwicklungsumgebung (IDE)
Qt bringt seine eigene Integrierte Entwicklungsumgebung (englisch: Integrated Development Environment, kurz: IDE) mit: der Qt Creator. Er läuft auf Linux, OS X und Windows und bietet intelligente Code-Vervollständigung, Syntax-Highlighting, ein integriertes Hilfesystem, Debugger- und Profiler- Integration und außerdem Integration für alle gängigen Versionskontrollsysteme (z.B. git, Bazaar). Zusätzlich zum Qt Creator können Entwickler unter Windows ebenfalls Qts Visual Studio Add-in nutzen. Andere IDEs (z.B. KDevelop unter KDE) können auch genutzt werden. Aber natürlich besteht keine Pflicht überhaupt eine IDE einzusetzen.
Internationalisierung und Lokalisierung (Sprachen)
Qt bringt hervorragende Unterstützung für die Internationalisierung (englisch: internationalization, kurz: i18n) mit. Das Tool Qt Linguist und seine Begleiter lupdate, lrelease und lconvert machen es einfach Anwendungen in die lokalen Sprachen zu übersetzen. Qt unterstützt die meisten Sprachen und Schriftsysteme, die heutzutage genutzt werden. Eine vollständige Auflistung ist auf den entsprechenden Hilfeseiten zu finden.
Widgets
Graphische Benutzeroberflächen (englisch: graphical user interface, kurz: GUI) können mit Qt direkt in C++ durch die Nutzung seines Widgets-Moduls geschrieben werden. Außerdem bringt Qt auch ein interaktives graphisches Tool namens Qt Designer mit, das ein Code-Generator für Widget-basierte GUIs ist. Qt Designer kann unabhängig genutzt werden, ist aber auch in den Qt Creator integriert.
QtQuick
Ein anderer Weg um GUIs mit Qt zu schreiben ist, das QtQuick-Modul zu nutzen. GUIs, die QtQuick nutzen, sind in QML geschrieben. QML ist eine deklarative Objektbeschreibungssprache, die Javascript für die prozedurale Programmierung integriert. QtQuick bietet die notwendigen Module für die GUI-Entwicklung mit QML. Es ist möglich ganze Programme nur in QML zu schreiben, jedoch meistens ist nur die GUI in QML geschrieben und das Programm-Backend ist programmiert in C++ (siehe Integrating QML and C++). Der Qt Creator bietet auch einen integrierten QtQuick-GUI-Designer und -Profiler.
Weitere Module
Qt ist weitaus mehr als ein GUI-Toolkit. Es stellt Module bereit für die plattformunabhängige Entwicklung in den Bereichen Netzwerk, Datenbanken, OpenGL, Web-Technologien, Sensoren, Kommunikationsprotokolle (Bluetooth, serielle Ports, NFC), XML- und JSON-Verarbeitung, Drucken, PDF-Generierung und vieles mehr.
Eine vollständige Liste der offiziellen Qt-Module ist auf der Seite mit allen Modulen in der Qt-Dokumentation zu finden.
Auf der Seite Inqlude.org ist außerdem eine Liste von 3rd-Party-Modulen basierend auf Qt zu finden, die in Qt-Projekten genutzt werden können.
Language Bindings (Sprachanbindungen)
Obwohl Programme, die Qt nutzen meist in C++ und QML geschrieben sind, gibt es Anbindungen an andere Programmiersprachen. Diese sind nicht Teil von Qt aber werden von unterschiedlichen 3rd Parties zur Verfügung gestellt. Riverbank Computing bietet beispielsweise als kommerzielle und freie Software eine Python-Anbindung (PyQt). Weitere Sprachanbindungen sind unter Category:LanguageBindings zu finden.