« Programmation Qt/Un premier programme » : différence entre les versions

m
Formatage, ajout de code
(Automatique : Mise à jour de la navigation entre les chapitres)
m (Formatage, ajout de code)
# Ouvrez une fenêtre de commande et assurez vous d'avoir le répertoire du compilateur C++ et celui de Qt dans le PATH :
#* Si vous avez installé la version binaire de QtSDK, lancez la console pour Qt :
#** Sous Windows : <ttcode>Démarrer > Tous les programmes > Qt DSK > Desktop > Qt ''version'' for Desktop (''compilateur'')</ttcode>
#* Sinon, configurez la variable d'environnement PATH puis lancer une console de commandes.
# Créez le fichier projet Qt <ttcode>HelloWorld.pro</ttcode> :
qmake -project
#<li value="4">Créez le fichier <ttcode>Makefile</ttcode> à partir du fichier projet :</li>
qmake
#<li value="5">Construisez le programme en utilisant le compilateur C++ (GCC, Visual C++, MinGW, ...) :</li>
mingw32-make
 
Si aucune erreur ne se produit, deux sous-répertoires <ttcode>debug</ttcode> et <ttcode>release</ttcode> ont été créés, et le fichier exécutable a été créé dans l'un d'eux :
* <ttcode>HelloWorld.exe</ttcode> sous Windows
* <ttcode>HelloWorld</ttcode> ou <ttcode>a.out</ttcode> sous Unix, Linux
Dans le cas contraire :
* vérifiez que vous avez bien tapé le code source ci-dessus,
Les options reconnues et traitées sont retirées du tableau au retour du constructeur pour que l'application ne les traitent pas à son tour.
Parmi les options traitées :
;Nom du programme <ttcode>argv[0]</ttcode>:Le nom du programme (sans extension .exe sous Windows) est utilisé comme nom par défaut pour l'application et comme titre par défaut pour les fenêtres.
;<ttcode>-display</ttcode>:(X11 seulement) Sélectionne le display ($DISPLAY par défaut)
;<ttcode>-style ''style''</ttcode>:Sélectionne le style utilisé par les éléments de l'interface.
Pour plus de détails sur les options traitées, voir https://qt-project.org/doc/qt-4.7/qapplication.html
 
</source>
Lancement l'exécution de la boucle traitant des évènements.
La méthode <ttcode>exec()</ttcode> retourne le code de retour du programme.
 
==== Fin ====
 
Cette fois-ci le fichier projet sera créé manuellement.
Celui-ci définit le modèle de programme à produire (<ttcode>app</ttcode> pour une application), et la liste des fichiers sources et en-têtes.
 
{{FichierDébut|essais.pro|info=Description du projet Qt}}
Un fichier projet possède une syntaxe similaire à celle des fichiers Makefile.
Différentes variables sont définies (=) ou complétées (+=) :
* '''<ttcode>TEMPLATE</ttcode>''' : Modèle d'exécutable à générer (<ttcode>app</ttcode> pour une application autonome, <ttcode>lib</ttcode> pour une bibliothèque ou un plug-in).
* '''<ttcode>SOURCES</ttcode>''' : Listes des fichiers sources (*.cpp) du projet.
* '''<ttcode>HEADERS</ttcode>''' : Listes des fichiers d'en-tête (*.h) du projet.
* '''<ttcode>FORMS</ttcode>''' : Listes des formulaires [[../Qt Designer/]] (*.ui) du projet.
* '''<ttcode>DEFINES</ttcode>''' : Listes des symboles définis lors de la compilation du projet.
 
 
 
La fenêtre principale est allouée pour l'exemple sur la pile d'appel.
Cependant, dans le cas où plusieurs instances de cette fenêtre (pour ouvrir plusieurs fichiers par exemple) sont créées et ouvertes, ou fermées (dont probablement la première instance créée), il est préférable d'allouer la première instance sur le tas (utiliser un pointer et allouer avec <ttcode>new</ttcode>) et d'utiliser l'option <ttcode>Qt::WA_DeleteOnClose</ttcode>.
 
 
=== Compiler le programme ===
 
La compilation s'effectue de la même façon que pour le programme précédent, excepté que la première commande (<ttcode>qmake -project</ttcode>) n'est plus nécessaire puisque l'on a déjà un fichier projet (essais.pro).
Le nom de ce fichier projet détermine également le nom de l'exécutable (<ttcode>essais.exe</ttcode> sous Windows).
 
=== Exécution ===
** soit dans le même répertoire que l'exécutable,
** soit dans un répertoire du PATH (sous Windows) ou de LD_LIBRARY_PATH (Unix/Linux).
* Si les bibliothèques ont été compilées en mode '''liaison statique''' (<ttcode>configure -static</ttcode>), celle-ci sont directement intégrées à l'exécutable produit à la compilation.
 
Les bibliothèques en question sont en général :
* <ttcode>QtCore4.dll</ttcode> et <ttcode>QtGui4.dll</ttcode> pour Qt (ou avec un d comme suffixe <ttcode>QtCore4d.dll</ttcode> et <ttcode>QtGui4d.dll</ttcode> en mode debug) ;
* <ttcode>mingwm10.dll</ttcode> pour MinGW. Cependant celle-ci n'est pas toujours requise.
 
En exécutant le programme, on obtient une fenêtre vide.
=== Analyse ===
 
* Le fichier <ttcode>essais.pro</ttcode> répertorie les différents fichiers du projet.
* On déclare <code>app</code> objet de la classe <code>QApplication</code> et <code>mainWin</code> objet de la classe <code>MainWindow</code>.
* <code>MainWindow</code> est une classe dérivée de <code>QWidget</code> à laquelle on ne va pour l'instant rien ajouter.