IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Débuter dans la création d'interfaces graphiques avec PyQt 4

Image non disponible


précédentsommairesuivant

IV. Terminer proprement l'application

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.

Image non disponible

Nous allons également utiliser une police plus attrayante que celle par défaut.

 
Sélectionnez
 #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

 
Sélectionnez
 #include <QFont>

Comme ce programme utilise la classe QFont, l'en-tête QFont doit être inclus.

 
Sélectionnez
 QPushButton quit("Quit");

Cette fois, le bouton affiche Quit et c'est exactement ce que le programme va faire quand l'utilisateur cliquera dessus.

 
Sélectionnez
 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.

 
Sélectionnez
 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.

 
Sélectionnez
 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 indirectemment). 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.


précédentsommairesuivant

Copyright © 2009 - 2021 Developpez.com LLC Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.