1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215
| #include "calculaddition.h"
#include "ui_calculaddition.h"
#include <QInputDialog>
#include <QPrintDialog>
#include <QPrinter>
#include <QPainter>
#include <QRect>
#include <QPushButton>
#include <QFile>
#include <QTextStream>
#include <QFileDialog>
#include <QDataStream>
#include <QTextCodec>
CalculAddition::CalculAddition(QWidget *parent) :
QWidget(parent),
ui(new Ui::CalculAddition)
{
ui->setupUi(this); //génère les fichier *.cpp et *.h
//création d'un slot personalisé pour calculer la somme.
connect(ui->calculer, SIGNAL(clicked()), this,
SLOT(calculer()));
//création d'un slot personalisé pour ouvrir la boite de dialogue input.
connect(ui->Revenus, SIGNAL(clicked()), this,
SLOT(entrerSomme()));
//création d'un slot personalisé pour ouvrir la boite de dialogue imprimer.
connect(ui->Imprimer, SIGNAL(clicked()), this,
SLOT(Imprimer()));
//création d'un slot personalisé pour enregistrer en fichier binaire.
connect(ui->Sauvegarde, SIGNAL(clicked()), this,
SLOT(Enregistrer()));
//création d'un slot personalisé pour ouvrir un fichier binaire.
connect(ui->Afficher, SIGNAL(clicked()), this,
SLOT(OuvrirFichier()));
//création d'un slot personalisé pourouvrir la feuille 2 des frais.
connect(ui->OuvreFen2, SIGNAL(clicked()), this,
SLOT(AfficheFenFrais()));
connect(ui->OK, SIGNAL(clicked()), this, SLOT(envoi_infos()));
}
//**********Méthode en créant un Slot**********************************************
void CalculAddition::calculer()
{
int somme = ui->Prix->value() * ui->Quantite->value(); //calculer multiplier avec 2 spinBoxs
ui->Total->setNum(somme); // affichache du total dans le QLabel
}
//********Fin de la méthode en créant un Slot***************************************
void CalculAddition::entrerSomme()
{
int entier = QInputDialog::getInteger(this, "Nombre", "Entrez un nombre entier");
ui->Prix->setValue(entier); // copie la variable entier dans spinBox Prix
}
//*****Création d'un slot imprimer**************************************************
void CalculAddition::Imprimer()
{
QString data = ui->Total->text(); //récupère la valeur du QLabel Réponse
int somme2 = ui->Prix->value(); //récupère la valeur du QSPinBox (Prix)
int somme3 = ui->Quantite->value(); //récupère la valeur du QSPinBox (Quantite)
//********************
QPrinter imprimante(QPrinter::HighResolution); //crée un objet imprimante en statique
imprimante.setPageSize(QPrinter::A4); //format de la feuille
QPrintDialog *dialog = new QPrintDialog(&imprimante); //appel de la boite pour imprim
if (dialog->exec() == QDialog::Accepted)
{
QPainter Painter; //crée en statique un objet pour dessiner
Painter.begin(&imprimante); //début du dessin
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));//ça marche pour imprimer les accents.
Painter.setPen(Qt::black);
Painter.setFont(QFont("Arial", 12));
Painter.drawText(QPoint (300,4000), "éèàçààà");
Painter.drawText(QPoint(300,1830), "3 - Salut essai d'impression!"); //imprime ce texte
QString s2 = QString::number(somme2); //conversion de somme2 int en s2 QString
QString s3 = QString::number(somme3); //conversion de somme3 int en s3 QString
Painter.drawText(QPoint(300,2700), s2); //imprime la variable s2 isue de somme2(pour la SPinBox Prix)
Painter.drawText(QPoint(300,3000), s3); //imprime la variable s3 isue de somme3 (pour la SPinBox Quantite)
Painter.drawText(QPoint(300,3300), data); //imprime la variable (issue de QLabel réponse)
QRect rectangle(QPoint(1410,3220), QSize(2880, 1960)); //crée objet rectangle coordonnées et dimensions
Painter.setPen(QPen(Qt::blue, 12)) ; //épaisseur de ligne ici 12, couleur bleu
Painter.setBrush(QBrush(Qt::white)) ; //remplissage en blanc
Painter.drawRect(rectangle); //dessine le rectangle
Painter.end(); // fin du dessin
}
}
void CalculAddition::Enregistrer() //Enregistrer dans un fichier binaire
{
QString filtre;//filtre correspond au filtre selectionné (dans cet exemple
//c'est "Fichier Binaire(*.bin *.* *)" vu qu'il n'y a qu'un seul filtre
//***Ouvre la boite de dialogue Enregistrer avec le chemin et les options de fichier
//avec ou sans extensions.***************************************************
QString fichier = QFileDialog::getSaveFileName(this, "Enregistrer un fichier",
"/home/henninger/Essais", "Fichier Binaire (*.* *)", &filtre);
//Initialisation de la QString somme qui sera enregistrée dans le fichier binaire
QString somme = ui->Total->text();
//Initialisation des 2 int: somme2 et somme3 (SPinBox) qui seront enregistrés dans le fichier binaire
int somme2 = ui->Prix->value();
int somme3 = ui->Quantite->value();
QFile file(fichier);
//Ouverture du fichier en lecture seul
if (!file.open(QIODevice::WriteOnly))
return ;
//Création de notre QDataStream à partir de notre fichier précédemment ouvert
QDataStream binStream(&file);
//On spécifie la version de l'encodage qui va être utilisé par notre objet QDataStream
binStream.setVersion(QDataStream::Qt_4_4);
//On ecrit nos differents objet dans le fichier
binStream << somme << somme2 << somme3;
//On ferme le fichier
file.close();
return ;
}
void CalculAddition::OuvrirFichier() //Ouverture d'un fichier binaire
{
QString filtre; //filtre correspond au filtre selectionné (dans cet exemple
//c'est "Fichier Binaire(*.bin *.* *)" vu qu'il n'y a qu'un seul filtre
//***Ouvre la boite de dialogue Ouvrir avec le chemin et les options de fichier
//avec ou sans extensions.***************************************************
QString fichier = QFileDialog::getOpenFileName(this, "Ouvrir un fichier",
"/home/henninger/Essais", "Fichier Binaire (*.* *)", &filtre);
//Utilisation des mêmes types utilisés lors de l'ecriture
QFile file(fichier);
//Ouverture du fichier en lecture seul
if (!file.open(QIODevice::ReadOnly))
return ;
//Création de notre QDataStream à partir de notre fichier précédemment ouvert
QDataStream binStream(&file);
/*On spécifie exactement le meme type d'encodage que celui utilisé lors de l'ecriture*/
binStream.setVersion(QDataStream::Qt_4_4);
//Lecture des differents objects contenus dans notre fichier binaire
QString somme; //déclaration variables
int somme2, somme3; //déclaration variables
//On ecrit nos differents objets dans le fichier
binStream >> somme >> somme2 >> somme3;
ui->Total->setText(somme);//affiche la somme dans Qlabel Total
ui->Prix->setValue(somme2);//affiche la somme dans QSpinBox Prix
ui->Quantite->setValue(somme3);//affiche la somme dans QSpinBox Quantite
//Fermeture du fichier
file.close();
return ;
}
void CalculAddition::AfficheFenFrais()
{
frais *fenfrais = new frais; //crée l'ojet fenetre pour les frais'
fenfrais->show(); //affiche la fenêtre frais
}
void CalculAddition::envoi_infos()
{
rep = ui->Total->text(); //récupère la somme du QLabel dans la variable rep
emit recup_infos(rep); //emission du signal
//this->close(); //ferme la fenêtre
}
CalculAddition::~CalculAddition() //destructeur
{
delete ui;
} |
Partager