Vous êtes sur la page 1sur 21

Année académique 2023-2024

Classe : L2IT
Date:19/12/2023
Enseignant: M. LOYA

TP n°5 de C++
Objectifs :
− Utiliser de la bibliothèque Qt pour créer, à l’aide de l’environnement QtCreator, des applications avec des interfaces
graphiques ;
− Apprendre à utiliser des classes existantes pour construire des applications

La bibliothèque Qt est surtout un ensemble de composants graphiques appelés widgets. Chaque type de
composants est défini par une classe. On distingue plusieurs catégories de composants :
− Widgets de haut niveau, widgets qui ne sont pas sur d’autres widgets c’est-à-dire qui n’ont pas de
widgets parents : Fenêtre, boîte de dialogue…
− Widgets de bas niveau, qui sont sur d’autres widgets c’est-à-dire qui ont des widgets parents :
Bouton, label, zone de texte, case à cocher, bouton radio…
− Composants invisibles : Actions, événements (par exemple, clic de souris), conteneur
Les widgets sont réutilisés dans les applications par :
− Héritage : extension d’un type de composants
− Composition : assemblage de composants
L’interaction entre les composants est gérée en Qt, par le mécanisme des « signaux/slots ». C’est un
mécanisme qui permet de relier librement les interfaces de composants.
− Un signal : c'est un message envoyé par un widget lorsqu'un évènement (clic souris, touche clavier…)
se produit.
− Un slot : c'est la fonction qui est appelée lorsqu'un évènement s'est produit. On dit que le signal
appelle le slot. Concrètement, un slot est une méthode d'une classe. Exemple : le slot quit() de la
classe QApplication provoque l'arrêt du programme.
Les signaux et les slots sont considérés par Qt comme des éléments d'une classe à part entière, en plus
des attributs et des méthodes.
Qt intègre un grand nombre de signaux et slots prédéfinis, mais il est possible de définir ses propres
slots et signaux. Les classes définissant des signaux ou des slots ne peuvent pas être compilées avec le
compilateur C++ habituel, il est nécessaire d’utiliser en premier lieu le compilateur moc(Meta Object
Compiler) : moc remplace tous les mots clefs spécifiques par des commandes et appels C++
implémentant le comportement voulu de l’objet.

La méthode statique QObject::connect permet d’associer un slot à un signal. Exemple : un clic sur un
bouton doit provoquer l'arrêt de l'application.
QObject::connect(
m_bouton, // pointeur vers le bouton qui va émettre le signal
SIGNAL(clicked()), // SIGNAL() est une macro du préprocesseur
qApp, // pointeur vers l'objet de type Qapplication créé dans le main
SLOT(quit())); // macro appelée lorsqu'on a cliqué sur le bouton

1
La méthode connect prend 4 arguments :
− un pointeur vers l'objet qui émet le signal
− le nom du signal que l'on souhaite « intercepter »
− un pointeur vers l'objet qui contient le slot récepteur
− le nom du slot qui doit s'exécuter lorsque le signal se produit
Toutes les classes de Qt héritent de QObject et toutes les classes widgets héritent de QWidget

Extrait de l’arbre d’héritage de Qt

2
Exercice 1
Objectifs :
On souhaite écrire une application qui permet de convertir les degrés Celcius en degrés en Farenheit et
vice versa à travers le formulaire suivant :

Le formulaire est un widget composé d’une zone de texte sur une


ligne (un QLineEdit), d’une liste déroulante (un QComboBox), de
deux labels (des QLabel) et de deux boutons (des QButton).
Le formulaire est donc un objet d’une sous-classe de QWidget
qu’on va appeler MaFenetre. On va donc un projet nommé
convertisseur qui va définir la classe MaFenetre et créer un
formulaire permettant à l’utilisateur d’effectuer des conversions de
degrés.
1. Création d'un projet Qt vide
− Sélectionner Fichier > Nouveau fichier ou projet

− Choisir les options Autre projet et Empty qmake Project (projet Qt vide) puis cliquer
sur choose…

3
− Taper le nom du projet (ici Convertisseur) et choisir l'emplacement où vous souhaitez
l'enregistrer puis cliquer Suivant>

− Cliquer sur Suivant >

4
− Cliquer sur Terminer

2. Ajout au projet de la classe MaFenetre, sous classe de QWidget


− Faire clic droit sur le nom du projet puis cliquer sur Add new (ou Ajouter nouveau)...

- Dans la boîte qui apparait, sélectionner C++> C++ Class

- Cliquer sur choose . . .

5
− Taper le nom de la classe MaFenetre
− Sélectionner Qwidget comme classe de base
− Vérifier que les options Include QWidget et Add Q_OBJECT sont cochées
− Cliquer sur Suivant > puis sur Terminer
Deux fichiers s’ajoutent alors au projet : mafenetre.h et mafenetre.cpp
3. Ajout au projet du fichier principal main.cpp
− Faire clic sur le nom du projet puis cliquer sur Add new (ou Ajouter nouveau)...

- Dans la boîte qui apparait, sélectionner C++> C/C++ Source


File puis cliquer sur Choose ...

6
− Saisir le nom du fichier, ici main puis cliquer suivant> et Terminer

− Saisir dans ce fichier vide le code suivant pour créer et afficher un objet de MaFenetre.
#include <QApplication>
#include "mafenetre.h"

int main(int argc, char *argv[])


{
QApplication a(argc, argv);//objet application

MaFenetre f;//création d’un objet de MaFenetre


f.show();// affichage de l’objet créé

return a.exec();
}
− Exécuter le programme ; pour le moment la classe MaFenetre permet de créer des widgets
fenêtre vide.

7
class MaFenetre : public QWidget
{
Q_OBJECT//pour pouvoir définir des signaux et des slots
public:
explicit MaFenetre(QWidget *parent = nullptr);

signals:

};

int main(int argc, char *argv[])


{
QApplication a(argc, argv);//objet application

MaFenetre f;//création d’un objet de MaFenetre


f.show();// affichage de l’objet créé

return a.exec();
}
On va donc ajouter des attributs à la classe MaFenetre afin que les objets soient les formulaires attendus :

4. Déclaration des widgets de la classe MaFenetre


− Ouvrir le fichier mafenetre.h et compléter la déclaration de la classe MaFenetre en déclarant
ses widgets
#ifndef MAFENETRE_H
#define MAFENETRE_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>

class MaFenetre : public QWidget


{
Q_OBJECT //pour pouvoir définir des signaux et des slots
// les widgets enfants ……
private: QLineEdit *valeur; // par pointeurs
QLabel *resultat;
QLabel *unite;
QComboBox *choixConversion;
QPushButton *bConvertir;
QPushButton *bQuitter;
public:
explicit MaFenetre(QWidget *parent = nullptr);

signals:
};
#endif // MAFENETRE_H 8
5. Définition de la classe MaFenetre
Pour le moment, le constructeur est la seule fonction membre de la classe.
Ouvrir le fichier mafenetre.cpp et compléter la définition du constructeur
#include "mafenetre.h"
#include<QHBoxLayout>

MaFenetre::MaFenetre(QWidget *parent) : QWidget(parent)


{
setWindowTitle("Convertisseur"); // le titre de la fenêtre
//Instanciation des widgets de la classe-----------
valeur = new QLineEdit(this);
resultat = new QLabel(this);
unite = new QLabel(this);
choixConversion = new QComboBox(this);
bConvertir = new QPushButton("Convertir", this);
bQuitter = new QPushButton("Quitter", this);
//positionnement des widgets dans la fenêtre---------
QHBoxLayout *hLayout1 = new QHBoxLayout;
QHBoxLayout *hLayout2 = new QHBoxLayout;
QVBoxLayout *mainLayout = new QVBoxLayout;
hLayout1->addWidget(valeur);
hLayout1->addWidget(choixConversion);
hLayout1->addWidget(resultat);
hLayout1->addWidget(unite);
hLayout2->addWidget(bConvertir);
hLayout2->addWidget(bQuitter);
mainLayout->addLayout(hLayout1);
mainLayout->addLayout(hLayout2);
setLayout(mainLayout);
// Initialisation des widgets :
valeur->clear();
choixConversion->addItem("Celcius -> Farenheit");
choixConversion->addItem("Farenheit -> Celcius");
resultat->setText(QString::fromUtf8("--.--"));
unite->setText(QString::fromUtf8(" °F"));
}

6. Déclaration des signaux et des slots


Ouvrir le fichier mafenetre.h et déclarer le signal void actualiser() et les slots void convertir() et void
permuter(int index)
#ifndef MAFENETRE_H
#define MAFENETRE_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>

class MaFenetre : public QWidget


{
Q_OBJECT //pour pouvoir définir des signaux et des slots
// les widgets enfants ……
private: QLineEdit *valeur; // par pointeurs
QLabel *resultat;
QLabel *unite;
QComboBox *choixConversion;
QPushButton *bConvertir;
QPushButton *bQuitter;
public:
explicit MaFenetre(QWidget *parent = nullptr);
signals:
void actualiser();
private slots: void convertir();
void permuter(int index);
7.}; Définition des slots
#endif // MAFENETRE_H
9
Ouvrir le fichier mafenetre.cpp et définir les slots void convertir()et void permuter(int
index)à la suite du constructeur

void MaFenetre::convertir()
{
switch (choixConversion->currentIndex()) {
case 0: resultat->setText(QString::fromUtf8("%1").arg(9 * valeur->text().toDouble()/5 +
32,0, 'f', 2));
unite->setText(QString::fromUtf8(" °F"));
break;
case 1: resultat->setText(QString::fromUtf8("%1").arg(5 * (valeur->text().toDouble() -
32)/ 9, 0, 'f', 2));
unite->setText(QString::fromUtf8(" °C"));
break;
}
}

void MaFenetre::permuter(int index)


{
valeur->setText(resultat->text()); /* on permute */
emit actualiser(); /* on déclenche une nouvelle conversion */
}

8. Connexion signal/slot
Ouvrir le fichier mafenetre.cpp et compléter la définition du constructeur par :
// Connexion signal/slot :
connect(bConvertir, SIGNAL(clicked()), this, SLOT(convertir()));
connect(this, SIGNAL(actualiser()), this, SLOT(convertir()));
connect(choixConversion, SIGNAL(currentIndexChanged(int)), this, SLOT(permuter(int)));
connect(bQuitter, SIGNAL(clicked()), this, SLOT(close()));

9. Exécution du programme

Exercice 2
On souhaite écrire un programme qui effectue les quatre opérations +, -, *, / suivant la figure ci-dessous :

Travail demandé:
1. Création d'un projet Qt vide
Sélectionner Fichier > Nouveau fichier ou projet puis choisir les options Autre
projet et Empty qmake Project (projet Qt vide) puis cliquer sur choose…
Taper le nom du projet (par exemple calculatrice) et choisir l'emplacement où vous souhaitez
l'enregistrer puis cliquer Suivant> jusqu’à Terminer
2. Ajout du fichier principal main.cpp
Création d’un fichier dans lequel on va définir la fonction main :
Clic droit sur le nom du projet

Cliquer sur Ajouter nouveau… puis sélectionner C++ >


Fichier source C++

3. Configuration du projet
Modifier le fichier calculatrice.pro en y ajouter la ligne QT += widgets pour avoir :
QT += widgets
10
SOURCES += \
main.cpp
Ensuite, exécuter qmake. Faire un clic droit sur le nom du projet et cliquer sur Exécuter qmake

4. Ajouter au projet la classe calcul, sous classe de QWidget formée des attributs dont les noms et
types suivent : _operande1 (QLineEdit), _operande2 (QLineEdit), _operateur
(QComboBox), _resultat (QLabel), _calculer (QPushButton), _quitter
(QPushButton). Le constructeur de QComboBox construit un widget vide, et il faut appeler
addItem pour rajouter les éléments, vous ajouterez 4 éléments à _operateur : + , - , * , / et vous
positionnerez les widgets dans la fenêtre calcul (de taille 450 sur 50).
5. Définir le constructeur afin créer le formulaire ci-dessus.
6. Écrire le programme principal qui instancie la fenêtre calcul et se termine quand la fenêtre est
fermée.
7. On va maintenant gérer le bouton _quitter afin qu’il quitte effectivement l’application. Dans le
constructeur de calcul, connecter le signal QPushButton::clicked de _quitter au slot
calcul::close de l’objet courant afin qu’un clic sur le bouton provoque une fermeture de la
fenêtre (et donc de l’application).
8. Passons au bouton _calculer. Commencer par définir un slot oncliccalculer (sans
arguments) et connecter ce slot au signal QPushButton::clicked de _calculer. Dans cette
méthode, on doit faire le calcul _operande1 _operateur _operande2. La méthode text de
QLineEdit retourne le texte saisi sous la forme d’une QString qu’il faut convertir en
std::string avec toStdString. std::stof convertit une std::string en float. Écrire dans
un premier temps le code qui définit deux variables de type float à partir des valeurs saisies par
l’utilisateur et les affiche sur la sortie standard. Attention std::stof ne fonctionne pas (en fait,
lève une exception) si la conversion ne peut pas être faite (chaîne vide, chaîne contenant autre chose
qu’un flottant). Nous ne prendrons en compte que le cas de la chaîne vide : faire en sorte qu’une
chaîne vide dans un widget opérande soit considérée comme la valeur 0.
9. Il faut maintenant faire le calcul, et pour cela récupérer le signe choisi dans _operateur . La
méthode currentText de QComboBox retourne le texte actuellement sélectionné. Faire le calcul
en fonction de l’opérateur choisi dans _operator. Le résultat du calcul est donc un float. Ce
float peut être converti en std::string par std::to_string, à son tour convertie en
QString par QString::fromStdString. La QString ainsi obtenue est utilisée pour changer
la valeur affichée par_resultat par un appel à setText.

Exercice 3
On souhaite développer une application Windows pour la gestion des articles en stock d’un magasin en
se basant sur les classes Article et ArticleEnSolde.
On dispose dans l’application d’un formulaire de gestion des articles. Le programme doit gérer une
collection des articles disponibles dans le stock.

11
Le formulaire de gestion des articles est représenté ci-dessous :

Travail demandé:
1. Création d'un projet Qt vide
Sélectionner Fichier > Nouveau fichier ou projet

12
Choisir les options Autre projet et Empty qmake Project (projet Qt vide) puis cliquer sur
choose…

Taper le nom du projet (par exemple gesStock) et choisir l'emplacement où vous souhaitez
l'enregistrer puis cliquer Suivant>

Cliquer sur Suivant >

13
Cliquer sur Terminer

Le projet gesStock est créé et est constitué seulement d'un fichier .pro. Ce fichier, propre à Qt, sert à
configurer le projet au moment de la compilation.
2. Ajout du fichier principal main.cpp
Création d’un fichier dans lequel on va définir la fonction main :
Clic droit sur le nom du projet

Cliquer sur Ajouter nouveau… puis sélectionner C++ >


Fichier source C++

Cliquer sur Choose . . . puis saisir le nom du fichier, ici main

14
Cliquer sur Suivant >

Cliquer sur Terminer


Le fichier main.cpp a été créé et ajouté au projet (voir ci-dessous). Pour le moment, il est vide.

3. Configuration de Qt
Pour pouvoir utiliser les interfaces graphiques (fenêtres, boutons, …), il faut d'abord effectuer une petite
configuration de Qt. On va devoir lui dire en effet qu'on veut utiliser le module "QtWidgets" qui
permet d'afficher les interfaces graphiques. Pour cela :
15
Ouvrir le fichier gesStock.pro. Il devrait contenir la liste des fichiers du projet :
SOURCES += \
main.cpp
Y ajouter la ligne QT += widgets pour demander à Qt de charger le module QtWidgets :
QT += widgets

SOURCES += \
main.cpp
Ensuite, pour que Qt prenne en compte la modification du fichier gesStock.pro, il faut exécuter un
petit utilitaire appelé qmake. Faire un clic droit sur le nom du projet et cliquer sur Exécuter qmake

Tester la configuration en tapant dans le fichier main. cpp le programme ci-dessous et en l’exécutant :
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])


{
QApplication app(argc, argv);

QPushButton bouton("Test de Qt !");


bouton.show();

return app.exec();
}
Si la configuration est correcte, on doit voir à l’écran la fenêtre suivante :

4. Ajout de la classe Article représentant les articles du magasin


Dans ce magasin un article est identifié par: code, désignation, prix, catégorie : ne peut prendre que
les valeurs « Informatique » ou « Bureautique »
Ajouter au projet la classe Article puis la déclarer et définir:
a. Les données membres doivent être visibles dans les classes filles de la classe Article
b. Définir des accesseurs pour la donnée membre catégorie.
c. Définir les constructeurs par défaut et d’initialisation.
d. Définir la fonction membre virtuelle getPrix() pour retourner le prix de l'article.
e. Définir la fonction membre setPrix(double) : pour changer le prix de l'article.
f. Ecrire la fonction membre toString() qui
renvoie toutes les propriétés séparées par un point-virgule.
g. Ecrire la fonction membre Equals() :2 articles sont égaux s’ils ont les mêmes propriétés.
5. Ajout de la classe ArticleEnSolde représentant les articles en solde du magasin
Un article en solde comprend une information additionnelle : Remise : pourcentage de réduction
sur le prix d'origine.
Ajouter au projet la classe ArticleEnSolde qui hérite
a. Prévoir des accesseurs pour les données membres.
b. Définir les constructeurs par défaut et d’initialisation
c. redéfinir la fonction membre getPrix(), afin de tenir compte du solde.
6. Ajout de la classe fenArticle représentant les formulaires de saisie des articles
Faire clic droit sur le nom du projet puis cliquer sur Ajouter nouveau . . .

16
Dans la boîte qui apparait, sélectionner C++> C++ Class

Cliquer sur Choose . . .

Taper le nom de la classe fenArticle


Sélectionner Qwidget comme classe de base
L’option Include QWidget est cochée
Cliquer sur Suivant > puis sur
Terminer
Deux fichiers s’ajoutent alors au projet :
fenarticle.h et fenarticle.cpp
La classe fenArticle contient une collection
d’articles.
Le fichier fenarticle.h doit contenir le
code suivant :
#ifndef FENARTICLE_H
#define FENARTICLE_H
#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QComboBox>
#include <QCheckBox>
#include<QTableWidget>
#include<vector>
#include"articleensolde.h"

class fenArticle : public QWidget


{
Q_OBJECT
private:
QLineEdit *lineEditCode, *lineEditDesignation, *lineEditPrix;
QLineEdit *lineEditTxRemise;
QComboBox *comboBoxCategorie;
QCheckBox *checkBoxSolde;
QPushButton *pushButtonAjouter,*pushButtonSupprimer,
*pushButtonFermer;
QTableWidget *tableWidgetArticles;
public:
fenArticle();
vector<Article*> stocks;//collection d’articles
public slots:
void on_pushButtonFermer_clicked() ;
void on_pushButtonAjouter_clicked() ;
void on_fenArticle_loaded();
void on_checkBoxSolde_checked();
void on_tableWidget_changeLine();
void on_pushButtonSupprimer_clicked();
};
#endif // FENARTICLE_H

TAF
1°) Définir le constructeur afin créer le formulaire ci-dessus.
17
2°) Ecrire le code du slot on_fenArticle_loaded()qui s’exécute au chargement du formulaire
permettant de :
a. Remplir la liste déroulante catégorie par les valeurs « Informatique » et « Bureautique ».
b. Initialiser la zone de saisie prix par 0.
c. Désactiver la zone de saisie pourcentage de réduction.
3°) Ecrire le code du slot on_pushButtonAjouter_clicked() associé au clic du bouton Ajouter
Permettant de :
a. Vérifier si tous les champs sont remplis.
b. Vérifier si le prix entré par l’utilisateur est correct.
c. Vérifier si la remise entrée par l’utilisateur est correcte si le bouton Article en solde est
coché.
d. Vérifier si le code d’article entré par l’utilisateur n’existe pas dans la collection d’articles en
stock.
e. De créer un article avec les champs renseignés par l’utilisateur et l’ajouter à la collection
d’articles en stock.
f. De mettre à jour la grille.
4°) Ecrire le code du slot on_pushButtonSupprimer_clicked() associé au clic bouton
supprimer permettant de :
a. Vérifier si le champ code est rempli.
b. Si le code d’article renseigné dans le champ code correspond bien à un article dans la
collection.
c. D’afficher un message de confirmation « Voulez-vous vraiment supprimer l’article ? » à
l’utilisateur.
d. De supprimer l’article de la collection.
e. De mettre à jour la grille.
5°) Ecrire le code du slot on_checkBoxSolde_checked()associé au bouton à cocher Article en
solde permettant d’activer ou de désactiver le champ pourcentage de réduction selon
l’état du bouton à cocher.
6°) Ecrire le code du slot on_tableWidget_changeLine()associé au changement de la ligne
sélectionnée dans la grille permettant de :
a. Remplir les champs par les valeurs des propriétés de l’article sélectionné.
b. Tenir compte s’il s’agit d’un article en solde ou d’un article non soldé pour cocher ou
décocher le bouton Article en solde et afficher la remise.
7°) Ecrire le code slot associé au bouton Fermer permettant de quitter l’application après un message
de confirmation

Exercice 4
Le salaire net d’un employé d’une société se calcule de la manière suivante :
Le salaire net = Salaire brut – Valeur de l’impôt – Valeur de CNSS
Salaire brut = (Salaire de base + Prime de technicité + Prime de transport + Prime des enfants) *
Taux de travail
Taux de travail = Nombre de jours travaillés /26
la prime des enfants est définie comme suit :
▪ 0 si le nombre d’enfants est 0,
▪ 7000 si le nombre d’enfants est 1,
▪ 12000 si le nombre d’enfants est 2,
▪ 16000 si le nombre d’enfants est strictement supérieur à 2.
Valeur de l’Impôt = Taux de l’Impôt * Salaire Brut
Valeur de CNSS = Taux de CNSS * Salaire Brut
Taux CNSS = 26,5%
Taux de l'impôt = 0 si le salaire de base < 150 000
▪ Taux de l'impôt = 2% si le salaire de base [150000,250000[
▪ Taux de l'impôt = 5% si le salaire de base [250000,500000[
▪ Taux de l'impôt = 12% si le salaire de base >= 500 000.
Réaliser l’interface ci-dessous permettant la saisie d’un employé.
Pour cela :
1°) Créer une application graphique :
Fichier →Nouveau fichier ou projet …→ Application → Application Qt avec widgets →saisir
« GesSalaire » comme nom de projet et sélectionner le dossier → Taper « FenSalaire » comme de
la classe et sélectionner QWidget comme classe parent → Terminer
18
2°) Remarquer que dans « Projets » une rubrique « Formulaires» sous le projet qui vient être créé
3°) Ouvrir cette rubrique et noter qu’un fichier « FenSalaire.ui» y est inclus.
4°) Ouvrir FenSalaire en double cliquant dessus. La figue ci-dessous apparaît. L'application qui est
utilisée pour ce type de fichier s'appelle QtDesigner, elle permet de dessiner l'interface de
l’application en y ajoutant des éléments visuels : boutons, menus, .etc.)

5°) Construire l’interface ci-dessous constitué des éléments :


Objet classe propriétés
objectName=groupBoxEmploye
groupBoxEmploye QGroupBox
title=Employé
objectName=labelNom
labelNom QLabel
text=Nom :
objectName=lineEditNom
lineEditNom QLineEdit
text= ″″
objectName=labelPrenom
labelPrenom QLabel
text=Prénom :
objectName=lineEditPrenom
lineEditPrenom QLineEdit
text= ″″
groupBoxSexe QGroupBox objectName=groupBoxSexe

19
title=Sexe
objectName=radioButtonMasculin
radioButtonMasculin QRadioButton
text=Masculin
objectName=radioButtonFeminin
radioButtonFeminin QRadioButton
text=Féminin
objectName=labelDateNaiss
labelDateNaiss QLabel
text=Date Naissance :
objectName=dateEditDateNaiss
dateEditDateNaiss QDateEdit buttonSymbols=NoButtons
date=01/01/2016
objectName=labelNombreEnf
labelNombreEnf QLabel
text=Nombre Enfants :
objectName=spinBoxnbEnf
spinBoxnbEnf QSpinBox
maximum=20
objectName=labelDateEmb
labelDateEmb QLabel
text=Date Embauche :
objectName=dateEditDateEmb
dateEditDateEmb QDateEdit
date=01/01/2016
objectName=labelCategorie
labelCategorie QLabel
text=Categorie :
objectName=comboBoxCategorie
comboBoxCategorie QComboBox editable=true
currenText=″″
objectName=lineFonction
lineEditFonction QLineEdit
text= ″″
objectName= groupBoxElSalaire
groupBoxElSalaire QGroupBox
title=Eléments du salaire
objectName= labelsalairebase
labelsalairebase QLabel
text=Salaire de base :
objectName= doubleSpinBoxSalairebase
doubleSpinBoxSalairebase QDoubleSpinBox buttonSymbols=NoButtons
maximum=1000000000
objectName= labelTechnicite
labelTechnicite QLabel
text=Technicité :
objectName= doubleSpinBoxTechnicite
doubleSpinBoxTechnicite QDoubleSpinBox buttonSymbols=NoButtons
maximum=1000000000
objectName= labelTransport
labelTransport QLabel
text=Transport :
objectName= doubleSpinBoxTransport
doubleSpinBoxTechnicite QDoubleSpinBox buttonSymbols=NoButtons
maximum=1000000000
objectName=labelNbJours
abelNbJours QLabel
text=Jours travaillés:
objectName=spinBox labelNbJours
spinBoxNbJrs QSpinBox
maximum=31
objectName =labelValQuotite
labelValQuotite QLabel frameshape : panel
text=″″
objectName : labelValPrimeEnfants
labelValPrimeEnfants QLabel frameShape : panel
text=″″
objectName =labelValBrut
labelValBrut QLabel frameShape : panel
text=″″
objectName = labelValCNSS
labelValCNSS QLabel frameShape : panel
text=″″
objectName = labelValIUTS
labelValIUTS QLabel
frameShape : panel
20
text=″″
objectName = pushButtonNouveau
pushButtonNouveau QPushButton
text=Nouveau
objectName = pushButtonCalculer
pushButtonCalculer QPushButton
text= Calculer Salaire
pushButtonQuitter QPushButton objectName = pushButtonQuitter
objectName= doubleSpinBoxSalairenet
enabled=false
doubleSpinBoxSalairenet QDoubleSpinBox
buttonSymbols=NoButtons
maximum=2000000000

6°) Associer au clic du boution Calculer salaire le slot de calculer du salaire net

21

Vous aimerez peut-être aussi