vignette|Wayland, libwayland-client et Qt.

Qt (prononcé officiellement en anglais () mais couramment prononcé ().) est : une API orientée objet et développée en C++, conjointement par The Qt Company et Qt Project. Qt offre des composants d'interface graphique (widgets), d'accès aux données, de connexions réseaux, de gestion des fils d'exécution, d'analyse XML, etc. ; par certains aspects, elle ressemble à un framework lorsqu'on l'utilise pour concevoir des interfaces graphiques ou que l'on conçoit l'architecture de son application en utilisant les mécanismes des signaux et slots par exemple.

Qt permet la portabilité des applications qui n'utilisent que ses composants par simple recompilation du code source. Les environnements pris en charge sont les Unix (dont GNU/Linux) qui utilisent le système graphique X Window System ou Wayland, Microsoft Windows, macOS, Tizen et également Genode. Le fait d'être une bibliothèque logicielle multiplateforme attire un grand nombre de personnes qui ont donc l'occasion de diffuser leurs programmes sur les principaux OS existants.

Qt intègre des bindings avec plus d'une dizaine de langages autres que le C++, comme Ada, C#, Java, Python, Ruby, Visual Basic, etc.

Qt est notamment connu pour être le framework sur lequel repose l'environnement graphique KDE Plasma, l'un des environnements de bureau par défaut de plusieurs distributions GNU/Linux.

Histoire 100px|vignette|Ancien logo de Qt. C'est au Norwegian Institute of Technology à Trondheim que Haavard Nord (CEO de Trolltech) et Eirik Chambe-Eng (président de Trolltech) se rencontrent. En 1988, Haavard Nord est chargé par une entreprise suédoise de développer une bibliothèque logicielle en C++ pour gérer une interface graphique, c'est la première fois qu'il commence à aborder le sujet. Deux ans plus tard, avec Chambe-Eng, ils développent une application multiplateforme (Unix, Macintosh et Microsoft Windows) et commencent sérieusement à réfléchir à la conception d'une bibliothèque graphique multiplateforme généraliste.

En 1991, ils entament le développement de cette bibliothèque. L'année suivante, Chambe-Eng propose le principe des « signaux et slots », qui devient la pierre angulaire de Qt. Et en 1993, le noyau de Qt est prêt et permet aux informaticiens de développer leurs propres composants graphiques. C'est à la fin de cette année que Haavard Nord propose de créer une entreprise pour commercialiser leur bibliothèque..

Quasar Technologies est créé le et renommé six mois plus tard en Troll Tech, puis Trolltech, puis Qt Software et enfin Qt Development Frameworks. Les débuts sont particulièrement difficiles financièrement. Mais ils ont la chance d'être mariés : leurs femmes subviennent à leurs besoins.

Le projet a été nommé Qt parce que le caractère Q était joli dans l'écriture Emacs de Haavard, et le t provient de . Le tout se prononçant en anglais , ce qui signifie « mignon ». Le t étant minuscule, ne pas prononcer () : ce n'est pas un sigle (QT).

C'est en que Trolltech a son premier client, l'entreprise norvégienne Metis. Et durant presque un an, elle n'en a pas d'autre, rendant l'entreprise très fragile financièrement. Son second client, l'Agence spatiale européenne (ESA), lui achète dix licences en .

Qt1 Le est annoncée la première version publique de Qt sur le newsgroup comp.os.linux.announce .. Et un an plus tard la version 0.97, puis le la version 1.0 est publiée et annoncée quelques jours plus tard ..

C'est en 1997 que le projet KDE est lancé par Matthias Ettrich (qui est embauché par Trolltech l'année suivante). Ce dernier prend la décision d'utiliser Qt comme bibliothèque de base. Le fait qu'un projet de cette envergure utilise Qt sera une très bonne publicité pour Trolltech et sa bibliothèque. Depuis, les liens entre Trolltech et KDE n'ont fait que se renforcer.

Qt2 La seconde version majeure de Qt est publiée en et une version pour les systèmes embarqués, Qt/Embedded, connue depuis sous le nom de Qtopia, est publiée en 2000. Cette dernière version est conçue pour Linux et utilise directement son framebuffer, sans passer par le système de fenêtrage X11 (qui est inadapté pour les systèmes embarqués) .

Qt3 Les deux premières versions majeures de Qt sont disponibles uniquement pour X11 et Windows, la prise en charge de Mac OS X arrive avec la version 3.0, publiée en 2001. Par rapport à la version 2.0, cette nouvelle version apporte une meilleure prise en charge de l'internationalisation, de l'Unicode ou encore des expressions rationnelles comme en Perl.

Qt4 Le , la version 4 est publiée et améliore notamment le moteur de rendu, désormais appelé ArthurDocumentation en ligne Qt, la séparation entre données et présentation et sépare la bibliothèque en modules : QtCore : pour les fonctionnalités non graphiques utilisées par les autres modules ; QtGui : pour les composants graphiques ; QtNetwork : pour la programmation réseau ; QtOpenGL : pour l'utilisation d'OpenGL ; QtSql : pour l'utilisation de base de données SQL ; QtXml : pour la manipulation et la génération de fichiers XML ; QtDesigner : pour étendre les fonctionnalités de Qt Designer, l'assistant de création d'interfaces graphiques ; QtAssistant : pour l'utilisation de l'aide de Qtce module, considéré comme obsolète, disparait dans Qt 4.6. La seule classe qui en fait partie reste présente pour des raisons de compatibilité; Qt3Support : pour assurer la compatibilité avec Qt 3. À cela s'ajoute pour la version commerciale sous Windows deux autres modules liés à l'utilisation d'ActiveX : QAxContainer et QAxServer.

Avec l'évolution de Qt 4, d'autres modules sont conçus : QtDBus : pour la communication inter-processus en utilisant D-Bus (uniquement sous Unix à partir de Qt 4.2) ; QtSvg : pour l'affichage d'images au format SVG (à partir de Qt 4.1) ; QtUiTools : pour charger dynamiquement les interfaces graphiques créées avec Qt Designer (à partir de Qt 4.1) ; QtTest : pour effectuer des tests unitaires (à partir de Qt 4.1) ; QtScript : pour l'évaluation de scripts utilisant Qt Script (à partir de Qt 4.3) ; QtWebKit : portage du moteur de rendu web WebKit (à partir de Qt 4.4) ; QtXmlPatterns : pour manipuler des documents XML via XQuery et XPath (à partir de Qt 4.4) ; Phonon : intégration de Phonon, framework multimédia de KDE 4, développé en collaboration avec la communauté KDE (à partir de Qt 4.4) ; QtHelp : remplace le module QtAssistant en permettant d'utiliser le format d'aide de Qt au sein des applications (à partir de Qt 4.4) ; QtScriptTools : divers outils pour QtScript comme un débogueur (à partir de Qt 4.5) ; QtMultimedia : diverses classes offrant des fonctionnalités multimédia de bas niveau comparées à Phonon (à partir de Qt 4.6) ; QtOpenVG : permet d'utiliser, si elle est présente, l'accélération matérielle d'OpenVG pour les images vectorielles en 2D (à partir de Qt 4.6) ; QtDeclarative : permet la conception d'interfaces graphiques dynamiques à l'aide d'un langage déclaratif (QML) (à partir de Qt 4.7).

Le , Nokia lance une OPA amicale pour racheter Qt et Trolltech. Trolltech, renommé en Qt Software, devient une division de Nokia. Dès lors, Nokia prend la décision en d'abaisser le maximum de barrières pour faciliter l'adoption de Qt, qui depuis est utilisé par leurs développements en interne : ajout d'une licence plus permissive que la GPL, la LGPL ; ouverture du développement à des développeurs externes en rendant accessible le dépôt de Qt.

Nokia se recentrant sur Windows, elle cède en l'activité services et gestion des licences commerciales de Qt à la société DigiaNokia cède la gestion des licences Qt à Digia. Le , elle cède intégralement la gestion du framework Qt à Digiahttp://www.digia.com/en/Home/Company/News/Digia-to-acquire-Qt-from-Nokia/ pour une somme de (à comparer aux de 2008Digia to pay Nokia €4 million for Qt as framework heads towards cross-platform future). Digia annonce vouloir étendre l'intégration de Qt à Android, iOS et Windows 8.

Qt5 Qt 5.0 est sorti le .. Bien que marquant des changements majeurs sur bien des points (rôle important de QML et de JavaScript pour la création des interfaces graphiques avec Qt Quick, séparation en modules indépendants pour faciliter les livraisons, couche d'abstraction pour faciliter les portages, etc.), le passage à Qt5 casse au minimum la compatibilité au niveau des sources. De cette façon, le passage est bien plus facile que pour Qt4.

Les versions Qt 5.x utilisent des nécessaires au déploiement du programme.

Qt Quick Qt Quick est un framework libre développé et maintenu par Digia faisant partie de la bibliothèque Qt. Il fournit la possibilité de créer des interfaces utilisateur personnalisables et dynamiques avec des effets de transition fluides de manière déclarative. Ce type d'interface dynamique est de plus en plus commun, notamment sur les smartphones. Qt Quick inclut un langage de script déclaratif appelé QML comparable au XAML créé par Microsoft pour sa bibliothèque WPF.

Qt Quick et QML sont officiellement fournis depuis Qt 4.7 (avec Qt Creator 2.1).

Licences

Le projet d'environnement graphique KDE a dès le début utilisé la bibliothèque Qt. Mais avec le succès de cet environnement, une certaine partie de la communauté du logiciel libre a critiqué la licence de Qt qui était propriétaire et incompatible avec la GNU GPL utilisée par KDE. Ce problème fut résolu par la société Trolltech qui mit les versions GNU/Linux et UNIX de Qt sous licence GNU GPL lorsque l'application développée était également sous GNU GPL. Pour le reste, c'est la licence commerciale qui entre en application. Cette politique de double licence a été appliquée uniquement pour GNU/Linux et UNIX dans un premier temps, mais depuis la version 4.0 de Qt, elle est appliquée pour tous les systèmes.

Créée en juin 1998, la fondation est chargée de s'assurer de la disponibilité de Qt pour le développement de logiciels libres. Dans le cadre d'un accord avec Trolltech, cette fondation a le droit de diffuser Qt sous une licence de style BSD dans le cas où Trolltech cesserait le développement de la version libre pour diverses raisons, y compris un dépôt de bilan . Le rachat de Trolltech par Nokia le ne remet pas en cause la politique de double licence, l'entreprise finlandaise soutient même KDE .

Le , Trolltech annonce que la version 3 et 4 de Qt sont à partir de cette date sous licence GPLv2 et GPLv3. Ce changement de version ne s'applique que pour les versions libres de Qt. Ainsi la version 3 de Qt pour Windows, qui n'est pas libre, ne voit pas sa licence changer . Ce changement s'inscrit dans le désir de KDE de passer également en version 3 de la GPL, en plus de la version 2 déjà utilisée .

Un an plus tard, le , Trolltech annonce qu'à partir de Qt 4.5, Qt sera également disponible sous licence LGPL v2.1. . Cette nouvelle licence permet ainsi des développements de logiciels propriétaires, sans nécessiter l'achat d'une licence commerciale auprès de Qt Development Frameworks. Ce changement, voulu par Nokia pour faire en sorte que Qt soit utilisé par un maximum de projets, est rendu possible par le fait que Nokia peut se passer des ventes des licences commerciales, contrairement à Trolltech qui ne pouvait pas se priver de cette source de revenus.

Architecture Structure générale L'API Qt est constituée de classes aux noms préfixés par Q et dont chaque mot commence par une majuscule (ex: QLineEdit), c'est la typographie camel case. Ces classes ont souvent pour attributs des types énumérés déclarés dans l'espace de nommage Qt.. Mis à part une architecture en pur objet, certaines fonctionnalités basiques sont implémentées par des macros (chaîne de caractères à traduire avec tr, affichage sur la sortie standard avec qDebug…).