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

Un livre de Wikilivres.
Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Ligne 61 : Ligne 61 :
Celui-ci définit le modèle de programme à produire (<tt>app</tt> pour une application), et la liste des fichiers sources et en-têtes.
Celui-ci définit le modèle de programme à produire (<tt>app</tt> pour une application), et la liste des fichiers sources et en-têtes.


{{FichierDébut|essais.pro}}
{{FichierDébut|essais.pro|info=Description du projet Qt}}
<source lang="make">
<source lang="make">
TEMPLATE = app
TEMPLATE = app
Ligne 70 : Ligne 70 :
{{FichierFin}}
{{FichierFin}}


{{FichierDébut|main.cpp|info=Fonction principale de lancement de l'application|icon=Crystal Clear mimetype source cpp.png}}
<source lang="cpp-qt">
#include <QApplication>
#include "mainwindow.h"


int main ( int argc, char *argv[] )
Voici le fichier <code>main.cpp</code> :
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
</source>
{{FichierFin}}


{{FichierDébut|mainwindow.h|info=En-tête pour la classe de la fenêtre principale|icon=Crystal Clear mimetype source h.png}}
#include <QApplication>
<source lang="cpp-qt">
#include "mainwindow.h"
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
int main ( int argc, char *argv[] )
{
QApplication app;
MainWindow mainWin;
mainWin.show();
return app.exec();
}


#include <QWidget>
Le fichier <code>mainwindow.h</code> :


class MainWindow : public QWidget
#ifndef MAINWINDOW_H
{
#define MAINWINDOW_H
Q_OBJECT
#include <QWidget>
class MainWindow : public QWidget
{
Q_OBJECT
public:
MainWindow();
};
#endif


public:
Enfin voici le fichier <code>mainwindow.cpp</code> :
MainWindow();


};
#include <QtGui>
#include "mainwindow.h"
MainWindow::MainWindow()
{
}


#endif
</source>
{{FichierFin}}

{{FichierDébut|mainwindow.cpp|info=Implémentation de la classe de la fenêtre principale|icon=Crystal Clear mimetype source cpp.png}}
<source lang="cpp-qt">
#include <QtGui>
#include "mainwindow.h"

MainWindow::MainWindow()
{
}
</source>
{{FichierFin}}


== Compiler un programme Qt ==
== Compiler un programme Qt ==

Version du 23 mars 2012 à 13:19

Ce chapitre propose de créer un premier programme et de le compiler en utilisant des lignes de commandes, afin de se familiariser rapidement aux mécanismes de compilation de Qt.

Afficher un bouton

Ce premier programme crée un bouton et l'affiche dans une fenêtre automatiquement créée par Qt.

Fichier

HelloWorld.cpp
Programme simple affichant un bouton "Hello world !"
#include <QApplication>
#include <QPushButton>

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);
    QPushButton hello("Hello world!");
    hello.resize(100,30);
    hello.show();
    return app.exec();
}


Compilation

Pour compiler le programme :

  1. Ouvrez une fenêtre de commande.
  2. Assurez vous d'avoir le répertoire du compilateur C++ et celui de Qt dans le PATH.
  3. Créez le fichier projet Qt HelloWorld.pro :
qmake -project
  1. Créez le fichier Makefile à partir du fichier projet :
qmake
  1. Construisez le programme en utilisant le compilateur C++ (GCC, Visual C++, MinGW, ...) :
  • Pour GCC :
make
  • Pour Visual C++ :
nmake
  • Pour MinGW :
mingw32-make

Si aucune erreur ne se produit, le fichier HelloWorld.exe a été créé. Dans le cas contraire :

  • vérifiez que vous avez bien tapé le code source ci-dessus,
  • vérifiez que vous avez bien utilisé les mêmes noms de fichier,
  • vérifiez que vous avez bien taper les commandes de compilation,
  • vérifiez l'installation du compilateur C++ et de Qt.

Exécution

Au lancement du programme, une fenêtre s'affiche avec un bouton "Hello world!" au centre de celle-ci.

Un second programme

Voici un programme très simple qui permettra l'affichage d'une fenêtre, plus précisément la fenêtre principale.

Cette fois-ci le fichier projet sera créé manuellement. Celui-ci définit le modèle de programme à produire (app pour une application), et la liste des fichiers sources et en-têtes.

essais.pro
Description du projet Qt
TEMPLATE = app
SOURCES  = main.cpp \
           mainwindow.cpp
HEADERS  = mainwindow.h


main.cpp
Fonction principale de lancement de l'application
#include <QApplication>
#include "mainwindow.h"

int main ( int argc, char *argv[] )
{
    QApplication app(argc, argv);
    MainWindow mainWin;
    mainWin.show();
    return app.exec();
}


mainwindow.h
En-tête pour la classe de la fenêtre principale
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWidget>

class MainWindow : public QWidget
{
    Q_OBJECT

public:
    MainWindow();

};

#endif


mainwindow.cpp
Implémentation de la classe de la fenêtre principale
#include <QtGui>
#include "mainwindow.h"

MainWindow::MainWindow()
{
}


Compiler un programme Qt

Pour compiler les programmes Qt il y a une nouvelle procédure à faire :

Vous devez ouvrir une console qui est fournie avec la bibliothèque Qt qui s'appelle "Qt4.5.0 Command Prompt" et ensuite vous dirigez vers le dossier du projet (ex : cd C:\Users\pseudo\projets\test). Ensuite vous devez taper 3 commandes qui sont :

  • qmake -project : qui génére un fichier .pro qui donne la liste des fichiers .cpp et .h du projet.
  • qmake : qui génére un fichier MakeFile à partir du fichier .pro.
  • make : qui compilera votre projet.

Si vous éxécutez votre projet directement par le .exe, cela affichera une erreur. Il faut rajouter les DLL dans le dossier debug de votre projet qui sont : mingwm10.dll, QtCore4.dll et QtGui4.dll que vous pourrez trouver dans les chemins suivants C:\MinGW\bin et C:\Qt\4.3.2\bin (faut chercher).

Ou, il y a un moyen plus simple qui est : dans la même console taper le chemin du dossier qui contient le .exe qui est : soit "debug" soit "release" (cd debug ou cd release), ensuite vous tapez le nom du .exe (ex test)


Analyse

  • Le fichier essais.pro répertorie les différents fichiers du projet.
  • On déclare app objet de la classe QApplication et mainWin objet de la classe MainWindow.
  • MainWindow est une classe dérivée de QWidget à laquelle on ne va pour l'instant rien ajouter.


Résultat

Après compilation on obtient une fenêtre vide (une image arrivera sous peu), base de la programmation graphique.