Movatterモバイル変換


[0]ホーム

URL:


Aller au contenu
Wikipédial'encyclopédie libre
Rechercher

Qt

Un article de Wikipédia, l'encyclopédie libre.
Page d’aide sur l’homonymie

Pour les articles homonymes, voirQT.

Qt
Description de l'image Qt logo neon 2022.svg.
Description de l'image Qt Creator 6.0.2 based on Qt 6.2.2.png.
Informations
CréateurHaavard Nord(d) et Eirik Chambe-Eng(d)Voir et modifier les données sur Wikidata
Développé par
Première version (29 ans, 298 jours)
Dernière version6.8.2 ()[1]Voir et modifier les données sur Wikidata
Dépôtcode.qt.io/cgit/qt/qtbase.gitVoir et modifier les données sur Wikidata
État du projetActif
Écrit enC++Voir et modifier les données sur Wikidata
Système d'exploitationGNU/Linux,Microsoft Windows,macOS,BSD,Android etiOSVoir et modifier les données sur Wikidata
EnvironnementGNU/Linux,Windows,Windows CE,Mac OS X,BSD,Unix,Symbian OS,Maemo,Tizen,Genode
Formats lusQt Message(d), Qt User Interface(d), Qt Translation source file(d), Qt Assistant Documentation Profile(d), Qt Assistant Content File(d), Qt Resource Collection(d) et Qt Jambi User Interface(d)Voir et modifier les données sur Wikidata
Formats écritsQt Message(d), Qt User Interface(d), Qt Translation source file(d), Qt Assistant Documentation Profile(d), Qt Assistant Content File(d), Qt Resource Collection(d) et Qt Jambi User Interface(d)Voir et modifier les données sur Wikidata
Typecréation d'interfaces graphique
LicenceGNU GPL v2,GNU LGPL 3 à partir de Qt 5.7[2]
Documentationdoc.qt.ioVoir et modifier les données sur Wikidata
Site webwww.qt.ioVoir et modifier les données sur Wikidata

modifier -modifier le code -voir Wikidata(aide)

Wayland, libwayland-client et Qt.

Qt (prononcé officiellement en anglaiscute (/kjuːt/) mais couramment prononcéQ.T. (/ˈkjuː.ˈtiː/)[3]) est :

Qt permet laportabilité des applications qui n'utilisent que ses composants par simplerecompilation ducode source. Les environnements pris en charge sont lesUnix (dontGNU/Linux) qui utilisent le système graphiqueX Window System ouWayland,Windows,Mac OS X,Tizen et égalementGenode. Le fait d'être unebibliothèque logiciellemultiplateforme attire un grand nombre de personnes qui ont donc l'occasion de diffuser leurs programmes sur les principaux OS existants.

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

Qt est notamment connu pour être le framework sur lequel repose l'environnement graphiqueKDEPlasma, l'un desenvironnements de bureau par défaut de plusieursdistributions GNU/Linux.

Histoire

[modifier |modifier le code]
Ancien logo de Qt.

C'est auNorwegian Institute of Technology àTrondheim que Haavard Nord (CEO deTrolltech) et Eirik Chambe-Eng (président deTrolltech) se rencontrent. En1988, Haavard Nord est chargé par une entreprisesuédoise de développer unebibliothèque logicielle en C++ pour gérer uneinterface graphique, c'est la première fois qu'il commence à aborder le sujet[4]. Deux ans plus tard, avec Chambe-Eng, ils développent une application multiplateforme (Unix,Macintosh etWindows) et commencent sérieusement à réfléchir à la conception d'unebibliothèque graphique multiplateforme généraliste.

En1991, 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 en1993, 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[4].

Quasar Technologies est créé le et renommé six mois plus tard en Troll Tech, puis Trolltech, puis Qt Software et enfinQt 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[4].

Le projet a été nomméQt parce que le caractèreQ était joli dans l'écritureEmacs de Haavard, et let provient deXt Xtoolkit. Le tout se prononçant enanglaiscute, ce qui signifie « mignon ». Let étant minuscule, ne pas prononcercutie (/ˈkjuː.ti/) : ce n'est pas unsigle (QT)[4].

C'est en queTrolltech 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[4].

Qt1

[modifier |modifier le code]

Le est annoncée la première version publique de Qt sur lenewsgroup comp.os.linux.announce[5]. 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[6].

C'est en1997 que le projetKDE est lancé parMatthias Ettrich (qui est embauché parTrolltech 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é pourTrolltech et sa bibliothèque. Depuis, les liens entreTrolltech etKDE n'ont fait que se renforcer.

Qt2

[modifier |modifier le code]

La seconde version majeure de Qt est publiée en et une version pour lessystèmes embarqués,Qt/Embedded, connue depuis sous le nom deQtopia, est publiée en2000. Cette dernière version est conçue pour Linux et utilise directement sonframebuffer, sans passer par lesystème de fenêtrageX11 (qui est inadapté pour les systèmes embarqués)[7].

Qt3

[modifier |modifier le code]

Les deux premières versions majeures de Qt sont disponibles uniquement pourX11 etWindows, la prise en charge deMac OS X arrive avec la version 3.0, publiée en2001. Par rapport à la version 2.0, cette nouvelle version apporte une meilleure prise en charge de l'internationalisation, de l'Unicode ou encore desexpressions rationnelles comme enPerl.

Qt4

[modifier |modifier le code]

Le, la version 4 est publiée et améliore notamment lemoteur de rendu, désormais appeléArthur[8], 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 debase de donnéesSQL ;
  • QtXml : pour la manipulation et la génération de fichiersXML ;
  • 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 Qt[9];
  • 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 etQAxServer.

Avec l'évolution de Qt 4, d'autres modules sont conçus :

  • QtDBus : pour lacommunication inter-processus en utilisantD-Bus (uniquement sous Unix à partir de Qt 4.2) ;
  • QtSvg : pour l'affichage d'images au formatSVG (à 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 destests unitaires (à partir de Qt 4.1) ;
  • QtScript : pour l'évaluation descripts utilisant Qt Script (à partir de Qt 4.3) ;
  • QtWebKit : portage du moteur de rendu webWebKit (à partir de Qt 4.4) ;
  • QtXmlPatterns : pour manipuler des documents XMLviaXQuery etXPath (à partir de Qt 4.4) ;
  • Phonon : intégration de Phonon,frameworkmultimédia deKDE 4, développé en collaboration avec la communautéKDE (à partir de Qt 4.4) ;
  • QtHelp : remplace le moduleQtAssistant 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 undé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 lesimages vectorielles en 2D (à partir de Qt 4.6) ;
  • QtDeclarative : permet la conception d'interfaces graphiques dynamiques à l'aide d'unlangage déclaratif (QML) (à partir de Qt 4.7).

Le,Nokia lance uneOPA amicale pour racheter Qt etTrolltech. Trolltech, renommé enQt 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 laGPL, laLGPL ;
  • ouverture du développement à des développeurs externes en rendant accessible ledépôt de Qt[10].

Nokia se recentrant sur Windows, elle cède en l'activité services et gestion des licences commerciales de Qt à la société Digia[11]. Le, elle cède intégralement la gestion du framework Qt à Digia[12] pour une somme de 4,9 millions € (à comparer aux 150 millions de 2008[13]). Digia annonce vouloir étendre l'intégration de Qt àAndroid,iOS etWindows 8.

Qt5

[modifier |modifier le code]

Qt 5.0 est sorti le[14]. Bien que marquant des changements majeurs sur bien des points (rôle important de QML et deJavaScript 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 desplugins nécessaires au déploiement du programme.

Qt Quick

[modifier |modifier le code]

Qt Quick est unframework libre développé et maintenu parDigia 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 lessmartphones. Qt Quick inclut unlangage de script déclaratif appelé QML comparable auXAML créé parMicrosoft pour sa bibliothèqueWPF.

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

Licences

[modifier |modifier le code]
Icône d'horloge obsolète.
Cette section doit êtreactualisée.
Des passages de cette section sont obsolètes ou annoncent des événements désormais passés.Améliorez-la oudiscutez-en.
Raison : Le régime de licences a été modifié au début de l'année 2020.

Le projet d'environnement graphiqueKDE 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é dulogiciel libre a critiqué la licence de Qt qui était propriétaire et incompatible avec laGNU GPL utilisée parKDE. 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 juin1998, la fondationKDE Free Qt Foundation est chargée de s'assurer de la disponibilité de Qt pour le développement de logiciels libres. Dans le cadre d'un accord avecTrolltech, cette fondation a le droit de diffuser Qt sous unelicence de style BSD dans le cas oùTrolltech cesserait le développement de la version libre pour diverses raisons, y compris undépôt de bilan[15]. Le rachat deTrolltech parNokia le ne remet pas en cause la politique de double licence, l'entreprisefinlandaise soutient mêmeKDE[16].

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[17]. Ce changement s'inscrit dans le désir deKDE de passer également en version 3 de la GPL, en plus de la version 2 déjà utilisée[18].

Un an plus tard, le,Trolltech annonce qu'à partir de Qt 4.5, Qt sera également disponible sous licence LGPL v2.1[19]. Cette nouvelle licence permet ainsi des développements delogiciels 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[10].

Architecture

[modifier |modifier le code]

Structure générale

[modifier |modifier le code]

L'API Qt est constituée de classes aux noms préfixés parQ et dont chaque mot commence par une majuscule (ex:QLineEdit), c'est la typographiecamel case. Ces classes ont souvent pour attributs des types énumérés déclarés dans l'espace de nommageQt[20]. Mis à part une architecture en pur objet, certaines fonctionnalités basiques sont implémentées par des macros (chaîne de caractères à traduire avectr, affichage sur lasortie standard avecqDebug…).

Les conventions de nommage des méthodes sont assez semblables à celles de Java : lelowercamel case est utilisé, c'est-à-dire que tous les mots sauf le premier prennent une majuscule (ex:indicatorFollowsStyle()), les modificateurs sont précédés parset, en revanche les accesseurs prennent simplement le nom de l'attribut (ex :text()) ou commencent paris dans le cas des booléens (ex :isChecked()).

Arborescence des objets

[modifier |modifier le code]

Les objets Qt (ceux héritant deQObject) peuvent s'organiser d'eux-mêmes sous forme d'arbre. Ainsi, lorsqu'une classe est instanciée, on peut lui définir un objet parent. Cette organisation des objets sous forme d'arbre facilite lagestion de la mémoire car avant qu'un objet parent ne soit détruit, Qt appelle récursivement le destructeur de tous les enfants[21].

Cette notion d'arbre des objets permet également de déboguer plus facilement,via l'appel de méthodes commeQObject::dumpObjectTree() etObject::dumpObjectInfo()[21].

Compilateur de meta-objets

[modifier |modifier le code]

Lemoc[22] (pourMeta Object Compiler) est unpréprocesseur qui, appliqué avant compilation du code source d'un programme Qt, génère desmeta-informations relatives aux classes utilisées dans le programme. Ces meta-informations sont ensuite utilisées par Qt pour fournir des fonctions non disponibles en C++, comme lessignaux et slots et l'introspection.

L'utilisation d'un tel outil additionnel démarque les programmes Qt du langage C++ standard. Ce fonctionnement est vu parQt Development Frameworks comme un compromis nécessaire pour fournir l'introspection et les mécanismes de signaux. À la sortie de Qt 1.x, les implémentations destemplates par les compilateurs C++ n'étaient pas suffisamment homogènes[23].

Signaux et slots

[modifier |modifier le code]
Article détaillé :Signaux et slots.

Les signaux et slots sont une implémentation dupatron de conceptionobservateur. L'idée est de connecter des objets entre euxvia des signaux qui sont émis et reçus par des slots. Du point de vue du développeur, les signaux sont représentés comme de simplesméthodes de la classe émettrice, dont il n'y a pas d'implémentation. Ces « méthodes » sont par la suite appelées, en faisant précéder « emit », qui désigne l'émission du signal. Pour sa part, le slot connecté à un signal est une méthode de la classe réceptrice, qui doit avoir la même signature (autrement dit les mêmes paramètres que le signal auquel il est connecté), mais à la différence des signaux, il doit être implémenté par le développeur. Le code de cette implémentation représente les actions à réaliser à la réception du signal.

C'est le MOC qui se charge de générer le code C++ nécessaire pour connecter les signaux et les slots.

Concepteur d'interface

[modifier |modifier le code]
Qt Designer, le concepteur d'interface.

Qt Designer est un logiciel qui permet de créer des interfaces graphiques Qt dans un environnement convivial. L'utilisateur, parglisser-déposer, place lescomposants d'interface graphique et y règle leurs propriétés facilement. Les fichiers d'interface graphique sont formatés enXML et portent l'extension.ui[24].

Lors de la compilation, un fichier d'interface graphique est converti en classe C++ par l'utilitaireuic. Il y a plusieurs manières pour le développeur d'employer cette classe[25] :

  • l'instancier directement et connecter les signaux et slots
  • l'agréger au sein d'une autre classe
  • l'hériter pour en faire une classe mère et ayant accès ainsi à tous les éléments constitutifs de l'interface créée
  • la générer à la volée avec la classeQUiLoader qui se charge d'interpréter le fichier XML.ui et retourner une instance de classeQWidget

qmake

[modifier |modifier le code]

Qt se voulant un environnement de développement portable et ayant le MOC comme étape intermédiaire avant la phase decompilation/édition de liens, il a été nécessaire de concevoir unmoteur de production spécifique. C'est ainsi qu'est conçu le programmeqmake.

Ce dernier prend en entrée un fichier (avec l'extension.pro) décrivant le projet (liste des fichiers sources, dépendances, paramètres passés aucompilateur, etc.) et génère un fichier de projet spécifique à la plateforme. Ainsi, sous les systèmesUNIXqmake produit unMakefile qui contient la liste des commandes à exécuter pour génération d'un exécutable, à l'exception des étapes spécifiques à Qt (génération des classes C++ lors de la conception d'interface graphique avec Qt Designer, génération du code C++ pour lier les signaux et les slots, ajout d'un fichier au projet, etc.).

Le fichier de projet est fait pour être très facilement éditable par un développeur. Il consiste en une série d'affectations de variables. En voici un exemple pour un petit projet:

TARGET = monAppliSOURCES = main.cpp mainwindow.cppHEADERS = mainwindow.hFORMS = mainwindow.uiQT += sql

Ces déclarations demandent que l'exécutable soit nommémonAppli, donne la liste des fichiers sources, en-têtes et fichiers d'interface graphique. La dernière ligne déclare que le projet requiert le moduleSQL de Qt.

Internationalisation

[modifier |modifier le code]

Qt intègre son propre système de traduction, qui n'est pas foncièrement différent dans le principe de la bibliothèquegettext. Selon le manuel de Qt Linguist, l'internationalisation est assurée par la collaboration de trois types de personnes : lesdéveloppeurs, lechef de projet et lestraducteurs[26].

Dans leur code source, les développeurs entrent des chaînes de caractères dans leur propre langue. Ils doivent permettre la traduction de ces chaînes grâce à la méthodetr(). En cas d'ambiguïté sur le sens d'une expression, ils peuvent également indiquer des commentaires destinés à aider les traducteurs.

Le chef de projet déclare les fichiers de traduction (un pour chaque langue) dans le fichier de projet. L'utilitairelupdate parcourt les sources à la recherche de chaînes à traduire et synchronise les fichiers de traduction avec les sources. Les fichiers de traductions sont des fichiersXML portant l'extension.ts.

Les traducteurs utilisent Qt Linguist pour renseigner les fichiers de traduction. Quand les traductions sont finies, le chef de projet peut compiler les fichiers.ts à l'aide de l'utilitairelrelease qui génère desfichiers binaires portant l'extension.qm, exploitables par le programme. Ces fichiers sont lus à l'exécution et les chaînes de caractères qui y sont trouvées remplacent celles qui ont été écrites par les développeurs.

Style

[modifier |modifier le code]

La bibliothèque embarque divers thèmes de widgets qui lui donnent une bonne intégration visuelle sur toutes les plateformes. Sur les environnements de bureauGNOME,Mac OS X etWindows les applications Qt ont ainsi l'apparence d'applications natives.

Qt permet de personnaliser l'apparence des différentscomposants d'interface graphique en utilisant le principe desfeuilles de style en cascade (CSS)[27].

Outils de développement

[modifier |modifier le code]

Qt Development Frameworks fournit un ensemble de logiciels libres pour faciliter le développement d'applications Qt :

  • Qt Designer est un concepteur d'interface graphique, il enregistre les fichiers.ui ;
  • Qt Assistant permet de visualiser la documentation complète de Qt hors-ligne ;
  • Qt Linguist est un outil destiné aux traducteurs, il leur permet d'ouvrir les fichiers.ts qui contiennent les chaînes de caractères à traduire, et d'entrer ensuite leur traduction ;
  • Qt Creator est l'environnement de développement intégré destiné à Qt et facilite lagestion d'un projet Qt. Sonéditeur de texte offre les principales fonctions que sont lacoloration syntaxique, lecomplètement, l'indentation, etc. Qt Creator intègre en son sein les outilsQt Designer etQt Assistant ;
  • Qt Demo présente un ensemble de petits programmes (sous forme d'exécutables et de sources) qui montrent les fonctionnalités offertes par la bibliothèque.
  • Qt Installer Framework est un outil permettant de créer facilement des programmes d'installations.

Même si Qt Creator est présenté comme l'environnement de développement de référence pour Qt, il existe des modules Qt pour les environnements de développementEclipse[28] etVisual Studio[29]. Il existe d'autres EDI destinés à Qt et développés indépendamment de Nokia, commeQDevelop etMonkey Studio.

Bindings

[modifier |modifier le code]

Desbindings existent afin de pouvoir utiliser Qt avec d'autres langages que le C++. Ainsi les langagesAda,C# etVisual Basic (Qt#[30]),D,F# (Qt#),Java (Qt Jambi),OCaml,Perl,PHP,Python[31],Ruby (QtRuby),Scheme peuvent être utilisés[32].

Qt Jambi

[modifier |modifier le code]

Qt Jambi était un binding de Qt pour le langageJava. En février 2009, Qt Software a annoncé[33] qu'il arrêtait le développement de ce framework après la sortie de la version 4.5 ; il est depuis supporté par la communauté.

Qt Jambi était distribué, du temps deQt Software, sous deux licences :licence publique générale GNU pour leslogiciels libres et une autre licence pour leslogiciels propriétaires. Il est actuellement disponible sousLGPL.

Utilisations

[modifier |modifier le code]
Voir la catégorie :Logiciel utilisant Qt.

De plus en plus de développeurs utilisent Qt, y compris parmi de grandes entreprises. On peut notamment citer :Google,Adobe Systems,Skype ou encore laNASA. Le site de Digia recense les entreprises utilisant Qt et les applications fondées sur Qt[34].

Syntaxe

[modifier |modifier le code]

Le classique « Hello World » dans différents langages :C++,Java (avecQtJambi),Python (avecPyQt etPySide) etC# (avecQyoto) :

.pro

[modifier |modifier le code]
TEMPLATE+=appQT+=widgets

C++

[modifier |modifier le code]
#include<QApplication>#include<QPushButton>intmain(intargc,char*argv[]){QApplicationapp(argc,argv);QPushButtonbouton("Hello world!");bouton.show();returnapp.exec();}

Étudions ces lignes.

#include <QApplication> : Inclut l'en-têteQApplication, nécessaire pour pouvoir utiliser la classeQApplication.

#include <QPushButton>: Idem, mais pour la classeQPushButton.

int main(int argc, char *argv[]) { : Début de la fonctionmain exécutée au lancement du programme.

QApplication app(argc, argv); : Crée un objetQApplication, cette étape est obligatoire avant d'utiliser des widgets (QWidget).

QPushButton bouton("Hello world!"); : Crée un objetQPushButton (qui est unQWidget). Cet objet se visualise par un bouton qui affiche le texte"Hello world!".

bouton.show(); : Appelle la fonctionshow de l'objetbouton pour le rendre visible (par défaut le bouton est invisible).

return app.exec(); : Appelle la fonctionexec deapp, et retourne son résultat. Cette fonction s’exécute jusqu'à ce que l'utilisateur ferme toutes les fenêtres visibles, dans ce cas, jusqu'à ce qu'il ferme la fenêtre correspondant àbouton.

Java (Qt Jambi)

[modifier |modifier le code]
importcom.trolltech.qt.gui.QApplication;importcom.trolltech.qt.gui.QPushButton;publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){QApplication.initialize(args);QPushButtonhello=newQPushButton("Hello World!");hello.show();QApplication.exec();}}

Python (PyQt)

[modifier |modifier le code]
fromPyQt4importQtGuiimportsysapp=QtGui.QApplication(sys.argv)hello=QtGui.QPushButton("Hello World!",None)hello.show()app.exec_()

Python (PySide)

[modifier |modifier le code]
fromPySideimportQtGuiimportsysapp=QtGui.QApplication(sys.argv)hello=QtGui.QPushButton("Hello World!",None)hello.show()app.exec_()

C# (Qyoto)

[modifier |modifier le code]
usingSystem;usingQyoto;publicclassHelloWorld{publicstaticintMain(String[]args){QApplicationapp=newQApplication(args);QPushButtonhello=newQPushButton("Hello world!");hello.Show();returnQApplication.Exec();}}

Notes et références

[modifier |modifier le code]
  1. (en) « Qt 6.8.2 Released »,(consulté le)
  2. « New agreement with the KDE Free Qt Foundation and changes for the open source version », surqt.io(consulté le).
  3. (en)Christian D. Kamm, « Prononciation de Qt lors de la release du SDK 1.1 »,Qt Studio,(consulté le).
  4. abcd ete(en) Jasmin Blanchette et Mark Summerfield,C++ GUI Programming with Qt 4, Prentice Hall,, 560 p.(ISBN 978-0-13-187249-3,lire en ligne), « A Brief History of Qt ».
  5. (en)« Beta of Motif-like C++ library available »,Trolltech,(consulté le).
  6. (en)« Qt 1.0 released (c++ gui library) »,Trolltech,(consulté le).
  7. (en)« Qtopia Core »,Trolltech,(consulté le)
  8. Documentation en ligne Qt
  9. ce 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é
  10. a etbAaron Seigo, « Qt goes LGPL! »,(consulté le)
  11. Nokia cède la gestion des licences Qt à Digia
  12. http://www.digia.com/en/Home/Company/News/Digia-to-acquire-Qt-from-Nokia/« Copie archivée »(version du surInternet Archive)
  13. Digia to pay Nokia €4 million for Qt as framework heads towards cross-platform future
  14. « The Qt Project », surqt-project.org(consulté le).
  15. (fr)« KDE Free Qt Foundation »,KDE(consulté le)
  16. (en)« Open letter to KDE and the Open Source community - Joint announcement »,Trolltech etNokia,(consulté le)
  17. (en)« Trolltech releases Qt under the GPL v3 license »,Trolltech,(consulté le)
  18. (fr)« Projects/KDE Relicensing »,KDE(consulté le)
  19. (en).« LGPL License Option Added to Qt »,Trolltech,(consulté le)
  20. http://doc.trolltech.com/qq/qq13-apis.html
  21. a etb(en)« Object Trees and Object Ownership »[archive du],Qt Development Frameworks,(consulté le)
  22. (fr)Utilisation du moc
  23. (en)Pourquoi Qt n'utilise pas les templates pour les signaux et les slots ?
  24. (en)« Qt Designer's UI File Format »,Qt Development Frameworks,(consulté le)
  25. (en)« Using a Designer .ui File in Your Application »,Qt Development Frameworks,(consulté le)
  26. (en)« Qt Linguist Manual »,Qt Development Frameworks,(consulté le)
  27. (en)« Qt Style Sheets »,Qt Development Frameworks,(consulté le)
  28. (en)« Qt Eclipse Integration for C++ »,Qt Development Frameworks,(consulté le)
  29. (en)« Qt Visual Studio .NET Integration »,Qt Development Frameworks,(consulté le)
  30. (en) « Languages/QtSharp », surkde.org(consulté le).
  31. PyQt,PySide,PythonQt
  32. https://wiki.qt.io/Category:LanguageBindings
  33. (en) « Qt Software to discontinue Qt Jambi after 4.5 release », surInternet Archive(consulté le).
  34. (en)Qt in Action


Annexes

[modifier |modifier le code]

Sur les autres projets Wikimedia :

Articles connexes

[modifier |modifier le code]

Autres bibliothèques généralistes multiplateformes

[modifier |modifier le code]
  • GTK+, utilisée par l'environnement graphique GNOME
  • wxWidgets, utilisée notamment par aMule

Liens externes

[modifier |modifier le code]

Communautés francophones

[modifier |modifier le code]

Qt Jambi

[modifier |modifier le code]
v ·m
Versions
Composants du bureau
Applications
Développement
Éducation
Jeux
Graphisme
Internet
Multimédia
Bureau
Système
Utilitaires
Composants de l'environnement
Modules
Communauté
Ce document provient de « https://fr.wikipedia.org/w/index.php?title=Qt&oldid=223895795 ».
Catégories :
Catégories cachées :

[8]ページ先頭

©2009-2025 Movatter.jp