Activité

Dans cette activité vous allez utiliser l’environnement de développement intégré (ou EDI ou IDE en anglais) nommé Qt Creator pour créer des applications graphiques.

Vous serez amenés à l’utiliser fréquemment pour tout ce qui concerne la programmation en langage C ou C++ aussi bien sur PC que sur Raspberry Pi.

Cet IDE a été conçu spécialement pour développer des programmes C++ avec le framework Qt qui est un ensemble de librairies qui permettent — entre autres — de développer des application graphiques, d’accéder par programme à des bases de données ou au réseau, de dessiner sur l’écran (2D ou 3D)…​

1ère application “Qt Widget”

🖮 Travail n° 1 Conversion °C ↔ °F

  1. Booter le PC sur OpenSUSE

  2. Exécuter Qt Creator

  3. Créer un projet avec les caractéristiques suivantes :

    1. type : “Qt Widgets Applications” (Fichiers  Nouveau fichier ou projet…​  Projets  Applications  Qt Widget Application)

    2. nom : QConvertisseurTemperature

    3. classe de base : QDialog

      class information
  4. Reproduire l’IHM (Interface Homme Machine) ci-dessous dans l’espace de travail qui s’ouvre lorsqu’on double-clique sur le fichier maingui.ui.

    Le type et le nom à donner à chacun des composants figure dans l’arborescence reproduite sous l’IHM

    ihm travail 01
    IHM
    ihm tree travail 01
    Arborescence des composants graphiques de l’IHM avec leur nom (→ propriété objectName)
  5. Faire un clic droit sur le bouton “Convertir” et choisir l’évènement clicked()

    go to slot
  6. Étudier le code ci-dessous et le reproduire dans la méthode void MainGUI::on_btnConvert_clicked() { …​ } qui s’affiche dans l’éditeur de texte de Qt Creator suite à l’action précédente

    void MainGUI::on_btnConvert_clicked()
    {
        double tC; // température exprimée en °C et à convertir
        double tF; // résultat de la conversion en °F
        bool isOK; // booléen utilisé pour indiquer si la conversion "chaine -> nombre" a réussi
    
        // Lire dans la variable `tC` la valeur saisie dans le champ de la température en °C [->text()]
        // et tenter de la convertir en nombre [.toDouble(&isOK)]
        tC = ui->ledtFromValue->text().toDouble(&isOK);
    
        // SI la conversion a échoué ALORS
        if( !isOK) {
            // Afficher un message d'erreur
            // (nécessite un `#include <QMessageBox>` en début de fichier)
            QMessageBox::critical(this
                , tr("Erreur de saisie")
                , tr("La valeur saisie pour la température\n"
                     "n'est pas valide"
                     )
                , QMessageBox::Ok
                );
            // Effacer le contenu des 2 champs de saisie
            ui->ledtFromValue->clear();
            ui->ledtToValue->clear();
        // SINON
        } else {
            // Convertir la température °C en température °F
            tF = tC * (9/5) + 32;
    
            // Afficher le résultat de conversion [->setText(...)]
            // après l'avoir mis sous forme de chaine de caractères [QString::number(tF)]
            ui->ledtToValue->setText(QString::number(tF));
        }
        // FINSI
    }
  7. Exécuter le programme pour le tester

  8. À partir de ce que vous venez de réaliser, faire évoluer le code source du programme de manière à effacer le contenu des 2 champs de saisie lorsqu’on clique sur le bouton “Effacer” de l’IHM

Challenge

On vous demande ici de coder par vous-même une application “Qt Widget”.

Ceci comprend :

  • le design de l’IHM

  • la programmation C++ du code associé à cette IHM

🖮 Travail n° 2 Temps de montée en t° d’un ballon d’eau chaude

À partir du code C déjà produit dans l’activité “Faire des calculs en langage C”, concevoir et coder une application graphique qui permet de calculer et afficher le temps de montée en t° d’un ballon d’eau chaude connaissant :

  • sa t° de départ

  • sa t° d’arrivée

  • sa contenance en litres

  • sa puissance en watts

Toutes ces informations seront à saisir dans un Input Widget de votre choix (→ Line Edit, Spin Box, Horizontal Slider …​)

La durée calculée devra être exprimée en heures, minutes, secondes

🞄  🞄  🞄