Aller au contenu

ELCa11 - Tuto : créer un projet C++ avec Qt Creator


Objectifs

  • Créer un nouveau projet C++ dans Qt Creator (sans dépendance Qt graphique).
  • Comprendre à quoi sert le fichier .pro (qmake).
  • Compiler et exécuter votre programme.
  • Adopter la stratégie un projet par exercice pour les BEs.

Prérequis


Pourquoi Qt ?

Qt est un framework C++ multi-plateforme (Windows, macOS, Linux). Il fournit non seulement une bibliothèque graphique (boutons, fenêtres, QML), mais aussi des conteneurs, des outils de réseau, de threads, de sérialisation, etc. Il est utilisé par de nombreux logiciels grand public (KDE, VLC, Mathematica, OBS Studio, Telegram, …).

Pour ce cours, on l’utilise pour deux raisons :

  • son IDE Qt Creator est un bon environnement C++ ;
  • son module graphique Qt/QML servira pour le projet.

Pour les BEs (TD 1 à 4), on n’utilisera pas la partie graphique de Qt — uniquement du C++ standard. Le projet créé est de type Plain C++ Application : un projet C++ vanille qui n’inclut pas les bibliothèques Qt.


Étape 1 — Créer un projet Plain C++ Application

  1. Lancer Qt Creator.
  2. Menu File > New Project….
  3. Dans la colonne Project, choisir Non-Qt Project > Plain C++ Application > Choose….
  4. Renseigner :
    • le nom du projet (par exemple BE1, BE2-DamierStat, etc. — un nom clair par exercice) ;
    • le répertoire où il sera créé.
  5. Choisir le système de build qmake (génère un fichier .pro).
  6. Sélectionner le kit auto-détecté (Desktop Qt 6.x.y …).
  7. Valider les écrans suivants en gardant les options par défaut, puis Finish.

Qt Creator crée le projet et affiche son contenu dans la barre latérale gauche, qui contient :

  • un fichier main.cpp avec un programme minimal généré ;
  • un fichier <NomDuProjet>.pro (le fichier projet qmake).

Étape 2 — À quoi sert le fichier .pro ?

Le .pro est un fichier de configuration lu par l’outil qmake. Il décrit le projet : quels fichiers compiler, en quel C++, avec quelles dépendances. Pour un Plain C++ Application, son contenu ressemble à :

TEMPLATE = app
CONFIG += console c++17
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

Quelques mots-clés :

  • TEMPLATE = app : on construit une application exécutable.
  • CONFIG += c++17 : on demande la compilation en C++17 (cohérent avec ce qui est attendu dans les BEs).
  • CONFIG -= qt : on n’inclut pas les bibliothèques Qt (projet C++ vanille).
  • SOURCES / HEADERS : la liste des fichiers .cpp et .h du projet.

En pratique, vous n’aurez pas à éditer ce fichier à la main : Qt Creator l’alimente automatiquement quand vous ajoutez ou retirez des fichiers via l’interface (clic droit sur le projet > Add Existing Files… ou Add New…).


Étape 3 — Écrire votre code

Cliquer sur main.cpp dans la barre latérale pour l’éditer. Remplacer le contenu par le programme demandé dans le BE.

Astuce — aide contextuelle : positionner le curseur sur le nom d’une fonction ou d’une classe (par exemple std::vector), puis appuyer sur F1. La documentation correspondante s’ouvre dans le panneau de droite.


Étape 4 — Compiler et exécuter

Cliquer sur le bouton vert en bas à gauche, ou utiliser le raccourci Ctrl+R (Windows / Linux) ou Cmd+R (macOS).

Si la compilation réussit, le programme s’exécute et sa sortie apparaît dans le panneau Application Output (en bas).

En cas d’erreur, regarder l’onglet Issues : Qt Creator y liste les messages du compilateur, avec un clic qui amène directement à la ligne fautive.


Étape 5 — Plusieurs exercices : un projet par exercice

Au cours d’un BE, vous écrirez plusieurs programmes (un par exercice ou par séquence). La méthode la plus simple et la plus propre est de créer un nouveau projet pour chacun.

Ainsi, chaque exercice :

  • a son propre main.cpp ;
  • garde son propre fichier .pro ;
  • peut être recompilé sans interférer avec les autres ;
  • conserve son historique pour comparer ou y revenir plus tard.

Une bonne convention de nommage : BE1-Seq1, BE1-Seq2, …, BE2-DamierStat, BE2-DamierDyn, etc. Les projets peuvent tous coexister dans le même répertoire parent.

Pourquoi pas un seul projet pour tout le BE ? Un projet ne peut contenir qu’un seul fichier avec une fonction main(). Si vous mettez plusieurs main() dans le même projet, le linker se plaindra. Multiplier les projets est plus simple que de manipuler les fichiers à chaque exercice.