Qt
De WikiDeveloppez.
(Différences entre les versions)
(→Qt Linguist) |
Version actuelle (12 février 2015 à 21:38) (voir la source) (→En Python avec PySide) |
||
Qt est un [[framework]] logiciel très complet. Il est prévu pour être simple à utiliser, et multiplateforme. En effet, un code qui fonctionne sur une plateforme fonctionnera sans problème sur toute autre plateforme supportée par Qt. | Qt est un [[framework]] logiciel très complet. Il est prévu pour être simple à utiliser, et multiplateforme. En effet, un code qui fonctionne sur une plateforme fonctionnera sans problème sur toute autre plateforme supportée par Qt. | ||
- | Il est développé en C++, mais peut très bien être utilisé avec [[Python]], grâce à [[PyQt]], ou bien en [[Java]], avec [[Qt Jambi]]. | + | Il est développé en C++, mais peut très bien être utilisé avec [[Python]], grâce à [[PyQt]] ou à [[PySide]], ou bien en [[Java]], avec [[Qt Jambi]]. |
Il est distribué sous plusieurs licences : [[GPL]] (v3), [[LGPL]] (v2.1) et [[QPL]]. | Il est distribué sous plusieurs licences : [[GPL]] (v3), [[LGPL]] (v2.1) et [[QPL]]. | ||
'''Attention ! Qt n'est pas un sigle ! Il s'écrit avec le ''Q'' majuscule et le ''t'' minuscule. Ceci se prononce ''cute'', l'anglais pour mignon.''' | '''Attention ! Qt n'est pas un sigle ! Il s'écrit avec le ''Q'' majuscule et le ''t'' minuscule. Ceci se prononce ''cute'', l'anglais pour mignon.''' | ||
- | Quelques [[EDI]] sont prévus pour être utilisés avec Qt : [[ | + | Quelques [[EDI]] sont prévus pour être utilisés avec Qt : [[Qt Creator]] et [[Monkey Studio]], par exemple. [[Nokia]] fournit aussi des plug-ins d'intégration à [[Visual Studio]] et à [[Eclipse]]. |
Depuis les [[Qt Developer Days]] 2009, [[Nokia]] propose une certification Qt : le ''Qt Essentials Curriculum Block 1.0''. Cette certification concerne les bases du développement avec Qt, mais nécessite une expérience avec Qt. | Depuis les [[Qt Developer Days]] 2009, [[Nokia]] propose une certification Qt : le ''Qt Essentials Curriculum Block 1.0''. Cette certification concerne les bases du développement avec Qt, mais nécessite une expérience avec Qt. | ||
La communauté de Developpez.com vous propose des défis Qt : [http://qt.developpez.com/defis/ Les défis Qt]. | La communauté de Developpez.com vous propose des défis Qt : [http://qt.developpez.com/defis/ Les défis Qt]. | ||
+ | |||
+ | == Programmes simples avec Qt == | ||
+ | |||
+ | Ces exemples affichent une fenêtre avec un bouton, sur lequel <tt>Hello world!</tt> est écrit. | ||
+ | |||
+ | === En C++ === | ||
+ | |||
+ | <tt>#include <QApplication> | ||
+ | #include <QPushButton> | ||
+ | |||
+ | int main(int argc, char *argv[]) | ||
+ | { | ||
+ | QApplication app(argc, argv); | ||
+ | QPushButton hello("Hello world!"); | ||
+ | hello.show(); | ||
+ | return app.exec(); | ||
+ | }</tt> | ||
+ | |||
+ | === En Python avec PyQt4 === | ||
+ | |||
+ | <tt>from PyQt4 import QtCore, QtGui | ||
+ | import sys | ||
+ | |||
+ | app = QtGui.QApplication(sys.argv) | ||
+ | hello = QtGui.QPushButton("Hello World!", None) | ||
+ | hello.show() | ||
+ | app.exec_()</tt> | ||
+ | |||
+ | === En Python avec PySide === | ||
+ | |||
+ | '''Attention''' : depuis début 2015, le projet [http://pyqt.developpez.com/actu/80721/Le-projet-PySide-est-declare-abandonne-en-2015-il-ne-reste-plus-que-PyQt-comme-binding-Python-de-Qt/ PySide est considéré comme mort]. Il est donc préférable de se tourner vers PyQt pour tout nouveau développement (il a notamment été mis à jour pour Qt 5). | ||
+ | |||
+ | <tt>from PySide import QtCore, QtGui | ||
+ | import sys | ||
+ | |||
+ | app = QtGui.QApplication(sys.argv) | ||
+ | hello = QtGui.QPushButton("Hello World!", None) | ||
+ | hello.show() | ||
+ | app.exec_()</tt> | ||
+ | |||
+ | === En C# avec Qyoto === | ||
+ | |||
+ | <tt>using System; | ||
+ | using Qyoto; | ||
+ | |||
+ | public class HelloWorld | ||
+ | { | ||
+ | public static int Main(String[] args) | ||
+ | { | ||
+ | QApplication app = new QApplication(args); | ||
+ | QPushButton hello = new QPushButton("Hello world!"); | ||
+ | hello.Show(); | ||
+ | return QApplication.Exec(); | ||
+ | } | ||
+ | }</tt> | ||
+ | |||
+ | === En Ruby avec QtRuby/Korundum === | ||
+ | |||
+ | <tt>require 'Qt4' | ||
+ | |||
+ | app = Qt::Application.new(ARGV) | ||
+ | |||
+ | hello = Qt::PushButton.new('Hello World!') | ||
+ | hello.show | ||
+ | |||
+ | app.exec</tt> | ||
== Qt SDK == | == Qt SDK == | ||
Ce SDK est disponible pour 4 plateformes : | Ce SDK est disponible pour 4 plateformes : | ||
- | * Linux 32 bits (''x86'') | + | * Linux 32 bits (''x86'') ; |
- | * Linux 64 bits (''x86_64'') | + | * Linux 64 bits (''x86_64'') ; |
- | * Windows | + | * Windows ; |
* Mac OS X. | * Mac OS X. | ||
De nouvelles versions sortent régulièrement, apportant les dernières modifications apportées à Qt et à [[Qt Creator]]. | De nouvelles versions sortent régulièrement, apportant les dernières modifications apportées à Qt et à [[Qt Creator]]. | ||
- | La | + | === Historique === |
+ | |||
+ | La version 2009.5 a apporté [[Qt Creator]] 1.3 et Qt 4.6.0. Elle est sortie le 1e décembre 2009. Elle avait été précédée par une RC 1, le 17 novembre 2009, avec les dernières versions de développement sorties à cette date. | ||
+ | |||
+ | La dernière en date est la 2010.4. | ||
+ | |||
+ | == Quelles sont les options pour créer une interface graphiques ? == | ||
+ | |||
+ | Trois techniques sont actuellement possibles, sans oublier qu'elles peuvent être combinées : | ||
+ | * [[Qt Designer]], qui crée des fichiers [[XML]] décrivant l'interface, édition graphique ; | ||
+ | * le code, directement en C++, en utilisant les classes de widgets ; | ||
+ | * [[Qt Quick]], une description déclarative des interfaces, édition graphique ou textuelle. | ||
== Modules == | == Modules == | ||
* Phonon (à partir de Qt 4.4) | * Phonon (à partir de Qt 4.4) | ||
* QtScriptTools (à partir de Qt 4.5) | * QtScriptTools (à partir de Qt 4.5) | ||
+ | * QtMultimedia (à partir de Qt 4.6) | ||
+ | * QtDeclarative (à partir de Qt 4.7) | ||
- | À ceux-ci s'ajoutent deux modules pour l'ActiveX | + | À ceux-ci s'ajoutent deux modules pour l'ActiveX : |
* QAxContainer | * QAxContainer | ||
=== QtDBus === | === QtDBus === | ||
Il s'agit d'un ensemble de classes qui facilitent les échanges entre les processus grâce à un démon [[DBus]] (originalement prévu pour [[UNIX]], il a été porté pour [[Windows]] par l'équipe [[KDE]]). | Il s'agit d'un ensemble de classes qui facilitent les échanges entre les processus grâce à un démon [[DBus]] (originalement prévu pour [[UNIX]], il a été porté pour [[Windows]] par l'équipe [[KDE]]). | ||
+ | |||
+ | === QtMultimedia === | ||
+ | |||
+ | Il s'agit d'un ensemble de classes apportant des fonctionnalités multimédia à vos applications. | ||
+ | |||
+ | === QtDeclarative === | ||
+ | |||
+ | Il s'agit du module qui fait le lien entre [[Qt Quick]] et votre code [[C++]]. | ||
=== QtScript === | === QtScript === | ||
=== moc === | === moc === | ||
- | L'outil permettant de gérer l'entièreté des paradigmes de Qt (signaux et slots notamment). | + | L'outil permettant de gérer l'entièreté des paradigmes de Qt (signaux et slots notamment) sur tous les compilateurs, sans être limité par la non-reconnaissance d'une technique ou un bug de l'un d'entre eux. |
=== lupdate === | === lupdate === | ||
- | L'outil permettant de récupérer les chaînes à traduire d'une application. Il peut les extraire des fichiers d'interface ([[.ui]]) et des sources du programme (pour autant que les chaînes à traduire soient protégées par ''tr()''). | + | L'outil permettant de récupérer les chaînes à traduire d'une application. Il peut les extraire des fichiers d'interface ([[.ui]]) et des sources du programme (pour autant que les chaînes à traduire soient protégées par ''tr()''). En extrayant les chaînes, il récupère des informations autour d'elles pour faciliter la traduction (il s'agit du contexte) : la classe qui utilise la traduction, par exemple. La fonction ''tr()'' peut prendre un second argument : il s'agit de la désambiguation, qui peut aussi aider à la traduction. Cet outil produit un fichier .ts, un dérivé du [[XML]], qui peut être lu par Qt Linguist, et ainsi traduit. Ce fichier .ts n'est pas prévu pour être directement utilisé par l'application : il faut qu'il passe d'abord par le compilateur, lrelease. |
=== lrelease === | === lrelease === | ||
- | L'outil permettant de compiler les traductions pour un chargement plus rapide. | + | L'outil permettant de compiler les traductions pour un chargement plus rapide. Il prend les fichiers XML .ts pour en produire des fichiers binaires pour les traductions, les fichiers .qm. Ces fichiers agissent comme des dictionnaires : Qt les charge, au moyen d'un QTranslator, et cherche la traduction de la chaîne passée en paramètre à tr(). |
=== qmake === | === qmake === | ||
- | L'outil de génération : il automatise les appels aux outils de compilation requis. | + | L'outil de génération : il automatise les appels aux outils de compilation requis. Il n'est pas limité à Qt : vous pouvez l'utiliser pour compiler toute sorte de projets, y compris des projets qui n'utilisent pas Qt. |
+ | |||
+ | |||
== Les certifications Qt == | == Les certifications Qt == | ||
== Ressources disponibles == | == Ressources disponibles == | ||
- | [http://qt.developpez.com La rubrique Qt] de [developpez.com Developpez.com] vous propose quelques ressources pour faciliter votre utilisation de Qt. | + | [http://qt.developpez.com La rubrique Qt] de [http://www.developpez.com Developpez.com] vous propose quelques ressources pour faciliter votre utilisation de Qt. |
+ | |||
+ | * {{fr}} [http://qt.developpez.com la FAQ Qt] ; | ||
+ | * {{fr}} [http://www.developpez.net/forums/f376/c-cpp/bibliotheques/qt/ les forums d'entraide Qt] ; | ||
+ | * {{fr}} [http://qt.developpez.com/ les dernières actualités sur Qt] ; | ||
+ | * {{fr}} [http://qt.developpez.com/tutoriels/ des tutoriels et articles Qt] ; | ||
+ | * {{fr}} [http://qt.developpez.com/outils/ des outils destinés à Qt] ; | ||
+ | * {{fr}} [http://qt.developpez.com/livres/ des livres sur Qt] ; | ||
+ | * {{fr}} [http://blog.developpez.com/recap/qt Un blog sur l'actualité de Qt] ; | ||
+ | * {{fr}} [http://qt.developpez.com/evenement/2006-devdays/ des reportages sur les Qt Developer Days 2006] ; | ||
+ | * {{fr}} [http://qt.developpez.com/evenement/2009-devdays/ des reportages sur les Qt Developer Days 2009] ; | ||
+ | * {{fr}} [http://qt.developpez.com/evenement/2010-devdays/ des reportages sur les Qt Developer Days 2010] ; | ||
+ | * {{fr}} [http://qt.developpez.com/binaires/ des binaires précompilés de Qt] ; | ||
+ | * {{fr}} [http://qt.developpez.com/defis/ les défis Qt]. | ||
+ | |||
+ | Des ressources sur l'utilisation de Qt depuis ses bindings Python sont aussi disponibles. | ||
- | * {{fr}} [http:// | + | * {{fr}} [http://pyqt.developpez.com/ les dernières actualités sur les bindings Python de Qt] ; |
- | * {{fr}} [http://www.developpez.net/forums/ | + | * {{fr}} [http://www.developpez.net/forums/f172/autres-langages/python-zope/gui/pyqt/ le forum d'entraide sur les bindings Python de Qt] ; |
- | + | * {{fr}} [http://pyqt.developpez.com/tutoriels/ les meilleurs tutoriels sur les bindings Python de Qt] ; | |
- | * {{fr}} [http:// | + | * {{fr}} [http://pyqt.developpez.com/faq/ la FAQ sur les bindings Python de Qt] ; |
- | + | * {{fr}} [http://pyqt.developpez.com/livres/ les meilleurs livres critiqués sur les bindings Python de Qt]. | |
- | + | ||
- | * {{fr}} [http:// | + | |
- | * {{fr}} [http:// | + | |
- | + | ||
- | + | ||
- | + |