Qt
De WikiDeveloppez.
(Différences entre les versions)
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. | ||
== Programmes simples avec Qt == | == Programmes simples avec Qt == | ||
+ | |||
+ | Ces exemples affichent une fenêtre avec un bouton, sur lequel <tt>Hello world!</tt> est écrit. | ||
=== En C++ === | === En C++ === | ||
- | <tt>#include <QApplication> | + | <tt>#include <QApplication> |
- | #include <QPushButton> | + | #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; | ||
- | int | + | public class HelloWorld |
- | { | + | { |
- | + | public static int Main(String[] args) | |
- | + | { | |
- | + | QApplication app = new QApplication(args); | |
- | + | QPushButton hello = new QPushButton("Hello world!"); | |
- | }</tt> | + | 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 == | ||
La dernière en date est la 2010.4. | 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 === | ||
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. | 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 == | ||
[http://qt.developpez.com La rubrique Qt] de [http://www.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 | + | * {{fr}} [http://qt.developpez.com la FAQ Qt] ; |
- | * {{fr}} [http://www.developpez.net/forums/f376/c-cpp/bibliotheques/qt/ | + | * {{fr}} [http://www.developpez.net/forums/f376/c-cpp/bibliotheques/qt/ les forums d'entraide Qt] ; |
- | * {{fr}} [http://qt.developpez.com/ | + | * {{fr}} [http://qt.developpez.com/ les dernières actualités sur Qt] ; |
- | * {{fr}} [http://qt.developpez.com/tutoriels/ | + | * {{fr}} [http://qt.developpez.com/tutoriels/ des tutoriels et articles Qt] ; |
- | * {{fr}} [http://qt.developpez.com/outils/ | + | * {{fr}} [http://qt.developpez.com/outils/ des outils destinés à Qt] ; |
- | * {{fr}} [http://qt.developpez.com/livres/ | + | * {{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://blog.developpez.com/recap/qt Un blog sur l'actualité de Qt] ; |
- | * {{fr}} [http://qt.developpez.com/evenement/2006-devdays/ | + | * {{fr}} [http://qt.developpez.com/evenement/2006-devdays/ des reportages sur les Qt Developer Days 2006] ; |
- | * {{fr}} [http://qt.developpez.com/evenement/2009-devdays/ | + | * {{fr}} [http://qt.developpez.com/evenement/2009-devdays/ des reportages sur les Qt Developer Days 2009] ; |
- | * {{fr}} [http://qt.developpez.com/binaires/ | + | * {{fr}} [http://qt.developpez.com/evenement/2010-devdays/ des reportages sur les Qt Developer Days 2010] ; |
- | * {{fr}} [http://qt.developpez.com/defis/ | + | * {{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://pyqt.developpez.com/ les dernières actualités sur les bindings Python de Qt] ; | ||
+ | * {{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://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]. |