Salut a tous,
Depuis un petit moment je tente de faire une calculatrice GUI en C++ avec Qt et je n’y parvient pas.
Je ne comprend d’où peut provenir mon erreur car mon code C++ compile très bien mais c’est quand je fais des calcul que sa ne fonctionne plus
Sans plus attendre voici mon code :
main.cpp
#include <iostream>
#include <QtGui>
#include <QApplication>
#include "fenetreMain.h"
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
QTranslator translator;
translator.load("calculatrice_en");
app.installTranslator(&translator);
fenetreMain fenetre;
fenetre.show();
return app.exec();
}
fenetreMain.h
#ifndef FENETREMAIN_H_INCLUDED
#define FENETREMAIN_H_INCLUDED
#include <QtGui>
#include <iostream>
class fenetreMain : public QWidget
{
Q_OBJECT
public:
fenetreMain();
private slots:
void slot1();
void slot2();
void slot3();
void slot4();
void slot5();
void slot6();
void slot7();
void slot8();
void slot9();
void slot0();
void slotm();
void slota();
void slotso();
void slotd();
void slote();
private:
QPushButton *boutonmul;
QPushButton *boutonadi;
QPushButton *boutondiv;
QPushButton *boutonsou;
QPushButton *bouton1;
QPushButton *bouton2;
QPushButton *bouton3;
QPushButton *bouton4;
QPushButton *bouton5;
QPushButton *bouton6;
QPushButton *bouton7;
QPushButton *bouton8;
QPushButton *bouton9;
QPushButton *bouton0;
QPushButton *boutonres;
QPushButton *exit;
QLineEdit *resultat;
QString text;
long bol;
double cal;
double cal2;
double calr;
bool ok;
long impl;
};
#endif
fenetreMain.cpp
#include <QtGui>
#include <iostream>
#include "fenetreMain.h"
fenetreMain::fenetreMain()
{
boutonmul = new QPushButton("X");
boutonadi = new QPushButton("+");
boutonsou = new QPushButton("-");
boutondiv = new QPushButton("/");
bouton1 = new QPushButton("1");
bouton2 = new QPushButton("2");
bouton3 = new QPushButton("3");
bouton4 = new QPushButton("4");
bouton5 = new QPushButton("5");
bouton6 = new QPushButton("6");
bouton7 = new QPushButton("7");
bouton8 = new QPushButton("8");
bouton9 = new QPushButton("9");
bouton0 = new QPushButton("0");
exit = new QPushButton(tr("Quitter", "Utilisé pour le bouton de fermeture"));
boutonres = new QPushButton("=");
resultat = new QLineEdit();
QString text = "";
ok = 1;
bol = 0;
cal = 0;
cal2 = 0;
impl = 0;
calr = 0;
QLabel *label = new QLabel(tr("resultat:", ""));
resultat->setText("0");
resultat->setReadOnly(true);
QGridLayout *layout = new QGridLayout;
layout->addWidget(label, 1, 0);
layout->addWidget(resultat, 1, 1, 1, 3);
layout->addWidget(boutonadi, 2, 3);
layout->addWidget(boutonsou, 3, 3);
layout->addWidget(boutondiv, 4, 3);
layout->addWidget(boutonmul, 5, 3);
layout->addWidget(bouton1, 2, 0);
layout->addWidget(bouton2, 2, 1);
layout->addWidget(bouton3, 2, 2);
layout->addWidget(bouton4, 3, 0);
layout->addWidget(bouton5, 3, 1);
layout->addWidget(bouton6, 3, 2);
layout->addWidget(bouton7, 4, 0);
layout->addWidget(bouton8, 4, 1);
layout->addWidget(bouton9, 4, 2);
layout->addWidget(bouton0, 5, 0 );
layout->addWidget(boutonres, 5, 1);
layout->addWidget(exit, 5, 2);
setLayout(layout);
QObject::connect(exit, SIGNAL(clicked()), qApp, SLOT(quit()));
QObject::connect(bouton1, SIGNAL(clicked()), this, SLOT(slot1()));
QObject::connect(bouton2, SIGNAL(clicked()), this, SLOT(slot2()));
QObject::connect(bouton3, SIGNAL(clicked()), this, SLOT(slot3()));
QObject::connect(bouton4, SIGNAL(clicked()), this, SLOT(slot4()));
QObject::connect(bouton5, SIGNAL(clicked()), this, SLOT(slot5()));
QObject::connect(bouton6, SIGNAL(clicked()), this, SLOT(slot6()));
QObject::connect(bouton7, SIGNAL(clicked()), this, SLOT(slot7()));
QObject::connect(bouton8, SIGNAL(clicked()), this, SLOT(slot8()));
QObject::connect(bouton9, SIGNAL(clicked()), this, SLOT(slot9()));
QObject::connect(bouton0, SIGNAL(clicked()), this, SLOT(slot0()));
QObject::connect(boutonadi, SIGNAL(clicked()), this, SLOT(slota()));
QObject::connect(boutonsou, SIGNAL(clicked()), this, SLOT(slotso()));
QObject::connect(boutondiv, SIGNAL(clicked()), this, SLOT(slotd()));
QObject::connect(boutonmul, SIGNAL(clicked()), this, SLOT(slotm()));
QObject::connect(boutonres, SIGNAL(clicked()), this, SLOT(slote()));
setWindowTitle(tr("Calculatrice", ""));
setWindowIcon(QIcon("calc.ico"));
}
void fenetreMain::slot1()
{
text += "1";
resultat->setText(text);
}
void fenetreMain::slot2()
{
text += "2";
resultat->setText(text);
}
void fenetreMain::slot3()
{
text += "3";
resultat->setText(text);
}
void fenetreMain::slot4()
{
text += "4";
resultat->setText(text);
}
void fenetreMain::slot5()
{
text += "5";
resultat->setText(text);
}
void fenetreMain::slot6()
{
text += "6";
resultat->setText(text);
}
void fenetreMain::slot7()
{
text += "7";
resultat->setText(text);
}
void fenetreMain::slot8()
{
text += "8";
resultat->setText(text);
}
void fenetreMain::slot9()
{
text += "9";
resultat->setText(text);
}
void fenetreMain::slot0()
{
text += "0";
resultat->setText(text);
}
void fenetreMain::slota()
{
resultat->setText("+");
bol = 1;
if (impl == 0)
{
cal = QString(text).toDouble(&ok);
text = "";
impl++;
}
if (impl == 1)
{
cal2 = QString(text).toDouble(&ok);
text = "";
impl++;
}
}
void fenetreMain::slotso()
{
resultat->setText("-");
bol = 2;
if (impl == 0)
{
cal = QString(text).toDouble(&ok);
text = "";
impl++;
}
if (impl == 1)
{
cal2 = QString(text).toDouble(&ok);
text = "";
impl++;
}
}
void fenetreMain::slotm()
{
resultat->setText("X");
bol = 3;
if (impl == 0)
{
cal = QString(text).toDouble(&ok);
text = "";
impl++;
}
if (impl == 1)
{
cal2 = QString(text).toDouble(&ok);
text = "";
impl++;
}
}
void fenetreMain::slotd()
{
resultat->setText("/");
bol = 4;
if (impl == 0)
{
cal = QString(text).toDouble(&ok);
text = "";
impl++;
}
if (impl == 1)
{
cal2 = QString(text).toDouble(&ok);
text = "";
impl++;
}
}
void fenetreMain::slote()
{
resultat->setText("/");
if (bol == 1)
{
calr = cal + cal2;
text = QString::number(calr);
resultat->setText(text);
text = "";
}
if (bol == 2)
{
calr = cal - cal2;
text = QString::number(calr);
resultat->setText(text);
text = "";
}
if (bol == 3)
{
calr = cal * cal2;
text = QString::number(calr);
resultat->setText(text);
text = "";
}
if (bol == 4)
{
calr = cal / cal2;
text = QString::number(calr);
resultat->setText(text);
text = "";
}
}
Pour un petit aperçut de son interface :
http://img40.xooimage.com/files/1/d/4/interface-7343ba.png
Merci d’avance pour votre aide.
Cordialement jyz93,