IV. Terminer proprement l'application▲
- tutorials/tutorial/t2/main.cpp
- tutorials/tutorial/t2/t2.pro
Cet exemple constitue une extension de la fenêtre créée dans le chapitre 1. Nous allons maintenant continuer afin de terminer proprement l'application sur requête de l'utilisateur.
Nous allons également utiliser une police plus attrayante que celle par défaut.
#include
<QApplication>
#include
<QFont>
#include
<QPushButton>
int
main(int
argc, char
*
argv[])
{
QApplication
app(argc, argv);
QPushButton
quit("Quit"
);
quit.resize(75
, 30
);
quit.setFont(QFont
("Times"
, 18
, QFont
::
Bold));
QObject
::
connect
(&
quit, SIGNAL
(clicked()), &
app, SLOT
(quit()));
quit.show();
return
app.exec();
}
IV-A. Analyse du code ligne par ligne▲
#include
<QFont>
Comme ce programme utilise la classe QFont, l'en-tête QFont doit être inclus.
QPushButton
quit("Quit"
);
Cette fois, le bouton affiche Quit et c'est exactement ce que le programme va faire quand l'utilisateur cliquera dessus.
quit.resize(75
, 30
);
Comme le texte est un peu plus court que "Hello World!", nous avons choisi une autre taille pour le bouton. Nous aurions pu également utiliser QFontMetrics pour configurer la taille ou laisser QPushButton en choisir une raisonnable par défaut.
quit.setFont(QFont
("Times"
, 18
, QFont
::
Bold));
Ici nous choisissons une nouvelle police pour le bouton de la famille Times, de taille 18 et avec le style gras.
QObject
::
connect
(&
quit, SIGNAL
(clicked()), &
app, SLOT
(quit()));
QObject::connect() est peut-être la fonction la plus indispensable de Qt. Notez que la méthode connect() est statique dans QObject. Ne la confondez pas avec la méthode connect() de la librairie de sockets Berkeley.
Cet appel à connect() établit une connexion à sens unique entre deux objets Qt (objets qui héritent de QObject, directement ou indirectement). Tous les objets Qt peuvent avoir des signaux (pour envoyer des messages) et des slots (pour en recevoir). Tous les widgets sont des objets Qt, car ils héritent de QWidget, qui hérite elle-même de QObject.
Ici, le signal clicked() de quit est connecté au slot quit() de app. Par conséquent, si on clique sur le bouton, l'application se terminera.
La documentation des signaux et des slots décrit ce sujet en détail.
IV-B. Lancer l'application▲
Quand vous lancez ce programme, vous voyez un bouton dans une fenêtre encore plus petite que dans le chapitre 1.
Consultez le chapitre 1 pour savoir comment créer un Makefile et compiler l'application.
IV-C. Exercices▲
Essayez de redimensionner la fenêtre. Cliquez sur le bouton pour fermer l'application.
Y a-t-il d'autres signaux dans QPushButton que l'on puisse connecter pour quitter ? Indice : QPushButton hérite la plupart de ses fonctionnalités de QAbstractButton.