problem avec QMessageBox[C++_td1_QT]

Voir le sujet précédent Voir le sujet suivant Aller en bas

resolu problem avec QMessageBox[C++_td1_QT]

Message  didi le Sam 28 Jan 2012, 19:04

bonsoir Smile,

J'ai un preoblem avec
Veillez à bien gérer la division
par zéro, par le biais d'un avertissement dans une boîte de message, par exemple ;

et le Calculette.cpp
Code:

#include <QMessageBox>
#include "calculette.h"
#include <sstream>

using namespace std;

Calculette::Calculette(QWidget *parent)
    : QWidget(parent)
{
   ui.setupUi(this);
   connect(ui.btEgal,SIGNAL(clicked()),this,SLOT(calcul()));

}

Calculette::~Calculette()
{

}

void Calculette::calcul()const{
   int nb1,nb2,res = 0;
   double mul;
   QRadioButton * op;
   nb1 = ui.sbOpG->value();
   nb2 = ui.sbOpD->value();

   if(ui.rbPlus->isChecked())   {
      op = ui.rbPlus;
   } else if (ui.rbMoin->isChecked()) {
      op = ui.rbMoin;
   } else if (ui.rbMul->isChecked()) {
      op = ui.rbMul;
   } else if (ui.rbDiv->isChecked()){
      op = ui.rbDiv;
   }

   string signe = op->text().toStdString();
   ostringstream oss("");
   string ch ;
   switch(signe.at(0))   {

   case '+' :
            res = nb1+nb2;
            oss << res;
            ch = oss.str();
            break;
   case '-' :
            res = nb1 - nb2;
            oss << res;
            ch = oss.str();
            break;
   case '*' :
               res = nb1 * nb2;
               oss << res;
               ch = oss.str();
               break;
   case '/' :
               if(nb2 == 0)   {
                  QMessageBox::information(this, "Warning", "Division par zéro !!!");

               //   oss << "Division par zero !!!!";
               } else {
                  mul = (double)nb1/nb2;
                  oss << mul;
               }
               ch = oss.str();
               break;
   }
   ui.lbResultat->setText(QString(ch.c_str()));

}

et les erreur sont vient de ligne QMessageBox::information(this, "Warning", "Division par zéro !!!");

Multiple markers at this line
- initializing argument 1 of 'static QMessageBox::StandardButton QMessageBox::information(QWidget*, const
QString&, const QString&, QMessageBox::StandardButtons, QMessageBox::StandardButton)'
- invalid conversion from 'const QWidget*' to 'QWidget*'


merci d'avance .


Dernière édition par didi le Dim 29 Jan 2012, 16:03, édité 1 fois

didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

resolu Re: problem avec QMessageBox[C++_td1_QT]

Message  galaeron le Dim 29 Jan 2012, 11:51

Je ne comprends pas bien ton utilisation de ta QMessageBox::Information ...
Si je ne me trompe pas, là tu fais instancie mais sans rien faire avec ... Oo
Tu ne fais pas de show() non plus ... donc pas d'apparition ...
Bref, je ne comprends pas ce que tu fais !

Voici comment j'aurais fait ...
Code:
QMessageBox* Div=new QMessageBox(QMessageBox::Warning,"Warning",QString("Erreur"));
// /* Ceci est pratique donc je le mets mais inutile ici */ Div->setWindowModality(Qt::NonModal);
Div->show();
ou encore
Code:
QMessageBox MessageBox;
MessageBox.setText("Division par zéro");
MessageBox.exec();         /* Affichage d'une fenêtre d'erreur lors de la division par zero et le label se modifie en erreur */
ui.lbResultat->setText("Erreur");

galaeron

Nombre de messages : 113
Age : 28
Prénom : Arthur
Statut : 3IR12
Date d'inscription : 29/06/2011

Revenir en haut Aller en bas

resolu Re: problem avec QMessageBox[C++_td1_QT]

Message  nvs le Dim 29 Jan 2012, 13:08

didi a écrit:bonsoir Smile,

J'ai un preoblem avec
Veillez à bien gérer la division
par zéro, par le biais d'un avertissement dans une boîte de message, par exemple ;

[...]

et les erreur sont vient de ligne QMessageBox::information(this, "Warning", "Division par zéro !!!");

Multiple markers at this line
- initializing argument 1 of 'static QMessageBox::StandardButton QMessageBox::information(QWidget*, const
QString&, const QString&, QMessageBox::StandardButtons, QMessageBox::StandardButton)'
- invalid conversion from 'const QWidget*' to 'QWidget*'


merci d'avance .

le message d'erreur est assez explicite quand même. le premier argument attendu par QMessageBox::information est un QWidget* or tu lui donnes, avec this dans une méthode const, un const QWidget*. va falloir virer le const ou transtyper avec const_cast.





Rolling Eyes

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: problem avec QMessageBox[C++_td1_QT]

Message  nvs le Dim 29 Jan 2012, 13:10

galaeron a écrit:Je ne comprends pas bien ton utilisation de ta QMessageBox::Information ...
je t'invite alors à lire la doc Smile








pale

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: problem avec QMessageBox[C++_td1_QT]

Message  didi le Dim 29 Jan 2012, 14:38

nvs a écrit:

le message d'erreur est assez explicite quand même. le premier argument attendu par QMessageBox::information est un QWidget* or tu lui donnes, avec this dans une méthode const, un const QWidget*. va falloir virer le const ou transtyper avec const_cast.

Rolling Eyes

Merrrrrrrrrrrrrciiiiiii Wink

ça marche je viens de modifier avec const_cast ...
QMessageBox::information(const_cast<Calculette *>(this), "Warning", "Division par zéro !!!");

Et je n'ai pas bien compris
tu lui donnes, avec this dans une méthode const, un const QWidget*.




didi

Nombre de messages : 215
Prénom : Dinesh
Statut : Smile
Date d'inscription : 21/01/2009

Revenir en haut Aller en bas

resolu Re: problem avec QMessageBox[C++_td1_QT]

Message  nvs le Dim 29 Jan 2012, 15:07

didi a écrit:[...] je n'ai pas bien compris
tu lui donnes, avec this dans une méthode const, un const QWidget*.
tu as :

Code:
void Calculette::calcul()const{
  [...]
  switch(signe.at(0))  {
  [...]
  case '/' :
              if(nb2 == 0)  {
                  QMessageBox::information(this, "Warning", "Division par zéro !!!");
              //  oss << "Division par zero !!!!";
              } [...]
  }
  [...]
}

comme calcul est une méthode const, this est de type const Calculette *






tongue

_________________

nvs

Nombre de messages : 5238
Age : 44
Prénom : Nicolas
Statut : prof
Localisation : bxl
Date d'inscription : 24/11/2005

http://nvansteenkiste.googlepages.com

Revenir en haut Aller en bas

resolu Re: problem avec QMessageBox[C++_td1_QT]

Message  Contenu sponsorisé Aujourd'hui à 07:11


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum