
Introduction:


Voici un programme minimaliste utilisant Qt (http://qt-project.org/doc/qt-4.8/), une librairie permettant de gérer facilement des interfaces utilisateurs (boutons, fenetres, evenements, ...) de manière portable entre plateformes.

Le Makefile permettant de compiler un projet Qt est complexe:
Une étape dite de MOC (http://qt-project.org/doc/qt-5.0/qtdoc/moc.html) est nécessaire pour convertir certains mots clés spécifique à Qt en C++.

Pour éviter d'avoir à écrire le makefile à la main, il est possible d'utiliser différents outils qui réalisent ce travail automatiquement. 
Les plus populaires étant: CMake et Qmake.

Qmake est un outil pensé pour compiler des projets utilisant Qt. Et est particulièrement simple d'utilisation dans ce contexte.
A l'inverse, CMake est plus générique, il permet d'automatiser des tâches plus complexes pas forcément liés à Qt, mais nécessite un temps d'apprentissage plus important.


Un IDE (logiciel de manipulation de code source avec coloration syntaxique, complétion, debugger integré, etc.) pratique permettant de manipuler du code C++ et bien pensé pour l'utilisation de Qt est QtCreator.



Pour résumer: 
- Qt est une librairie permettant de réaliser des IHM.
- Pour générer le Makefile nécessaire à la compilation d'un projet utilisant Qt, on peux utiliser par exemple QMake ou CMake.
- Pour travailler sur un projet de code en C++, on peut utiliser l'IDE QtCreator.


===================================================


1. Fichier Hello_world.cpp 
--------------------------

Considérons le cas du fichier hello_wold.cpp

Observez celui-ci avec un éditeur de texte quelconque.

Il s'agit d'un fichier contenant du code C++ et utilisant la librairie Qt.
- QApplication (http://qt-project.org/doc/qt-4.8/qapplication.html) est un objet Qt permettant de gérer l'interface. 
Le lancement de l'interface est réalisé par le dernier l'appel QApplication.exec()
- QPushButton (http://qt-project.org/doc/qt-4.8/qpushbutton.html) est ce que l'on appel un widget, c'est à dire un "élément graphique interactif" tel qu'un bouton, une entrée utilisateur, une horloge, etc. que l'on peut venir placer dans une fenêtre. Ici il s'agit d'un bouton sur lequel on peut cliquer.


2. Compilation par le biais de QMake
-------------------------------------

Pour compiler ce fichier, nous allons détailler la démarche en utilisant l'outil QMake qui va nous permettre de générer le Makefile correspondant.


Creez le fichier de configuration du projet (.pro) à l'aide de qmake. 
Pour cela, tapez en ligne de commande
$ qmake -project
(le symbole "$" indique le début de la ligne de commande, ce n'est pas un caractère à taper)

Notez que le fichier partie_1.pro a été créé.
Celui ci recence les informations d'un projet. Par exemple:
TARGET représente le nom de l'executable
INCLUDEPATH += . indique que le repertoire courant est ajouté au chemin de recherche des fichiers.
SOURCES indique l'ensemble des fichiers faisant partie du projet.

Notez que l'on peut ajouter des informations suplémentaires à l'aide du symbol "+=" ou initialiser à une nouvelle valeur avec "=" dans les variables du fichier .pro.

Notez que ce fichier de configuration .pro possède peu de lignes et reste simple à comprendre et à lire. La commande "qmake -project" permet d'initialiser ce fichier de configuration, mais celui-ci sera généralement modifié pour l'ajout d'informations supplémentaires, voir créé à la main.

Prenez l'habitude de demander la compilation de votre projet en mode "debug" ainsi que l'affichage des Warnings en ajoutant la ligne suivante dans le fichier .pro:
CONFIG += debug warn_on



Créez désormais le Makefile en appelant QMake sur le fichier de configuration .pro:
$ qmake partie_01.pro

(dans le cas où votre système possède plusieurs versions de Qt: Qt3, Qt5, il peut être nécessaire d'invoquer explicitement "qmake-qt4 partie_01.pro")

Notez la génération du Makefile

Compilez le projet:
$ make

Executez le programme et observez le résultat.



3. Modification du code
------------------------

Chargez le projet à l'aide de QtCreator à partir du fichier .pro (ou à partir de votre IDE habituel)
$ qtcreator partie_01.pro

-> Creez un second bouton dans ce même programme. Observez le résultat.


