[Catégorie modifiée VB -> C++] C++ et Qt problème de confirmation avant de quit

belloutcha Messages postés 4 Date d'inscription jeudi 10 mars 2011 Statut Membre Dernière intervention 1 mai 2011 - 1 mai 2011 à 13:46
belloutcha Messages postés 4 Date d'inscription jeudi 10 mars 2011 Statut Membre Dernière intervention 1 mai 2011 - 1 mai 2011 à 23:17
Bonjour,

Je n'ai aucun msg d'erreur, mon interface s'affiche correctement mais quand je clique sur Exit y'a rien qui s'affiche or moi je veux une boite de dialogue pour confirmer.
voila mes codes:

MaFenetre.cpp
#include "MaFenetre.h"
#include "ui_fenetre0.h"

#include "Apropos.h"
#include "ui_fenetreaproposapp.h"
#include "Aproposqt.h"
#include "ui_fenetreaproposqt.h"
#include "MonTraitement.h"
#include "ui_fenetreTrait.h"
#include "Info.h"
#include "ui_fenetreinfo.h"
#include "BD2.h"
#include "ui_fenetreBD2.h"
#include "Dialog.h"
#include "ui_fenetreDialog.h"
#include "Aide.h"
#include "ui_fenetreHelp.h"


#include <highgui.h>
#include <cv.h>
#include <cxcore.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include
#include "cvaux.h"
#include "highgui.h"
#include <ctype.h>
#include<math.h>

#include <QtGui>
#include <QMainWindow>
#include <QtGui/QApplication>
#include <QString>
#include <QFileDialog>
//#include <QMessageBox>
//#include <QGridLayout>
#include <QPixmap>
#include <QTextEdit>
#include <QLabel>
#include <QInputDialog>
#include <QTextBrowser>
#include <QDialog>
#include

//using namespace std;

//MaFenetre::MaFenetre(QWidget *) :
//QMainWindow(),

MaFenetre::MaFenetre(QWidget * parent) :
//MaFenetre::MaFenetre() :
QMainWindow(parent),
//QMainWindow(),
ui(new Ui::MaFenetre)
{
setupUi(this);
//----------------------------les icones des boutons et actions-------------------------------------------

//--------------------------------------les bouttons------------------
//QPushButton *buttonquit=new QPushButton("",this);
//buttonquit->setIcon(QIcon("arreter3.png"));
//buttonquit->setGeometry(135, 207, 31, 31);
//QPushButton *buttontraiter=new QPushButton("",this);
//buttontraiter->setIcon(QIcon("traitement.png"));
//buttontraiter->setGeometry(135, 138, 31, 31);
//--------------------------------------------la fenetre--------------
this->setWindowIcon(QIcon("lena.png"));
//------------------------------------------------les actions-------------------------------------------

//actionA_propos_application->setIcon(QIcon("à propos.png"));
//actionA_propos_Qt->setIcon(QIcon("à propos2.png"));
//actionQuitter->setIcon(QIcon("arreter.png"));
//action_Traiter->setIcon(QIcon("traitement.png"));
//action_chercher->setIcon(QIcon("jumelle.png"));
//action_charger->setIcon(QIcon("loader.png"));
//action_Explorer->setIcon(QIcon("exploration.png"));
//action_Base_Image->setIcon(QIcon("bd_img.png"));

//------------------------------------------------les connexions----------------------------------------------

QObject:: connect(actionQuitter,SIGNAL(triggered()),qApp,SLOT(quitterapp()));
//connect(action_charger,SIGNAL(triggered()),this,SLOT(charger_img()));
QObject:: connect(action_Traiter,SIGNAL(triggered()),this,SLOT(traiter()));
QObject:: connect(action_Info,SIGNAL(triggered()),this,SLOT(info_bd()));
QObject:: connect(action_Stat,SIGNAL(triggered()),this,SLOT(stat_bd()));

QObject:: connect(actionA_propos_application,SIGNAL(triggered()),this,SLOT(aproposapp()));
QObject:: connect(actionA_propos_Qt,SIGNAL(triggered()),this,SLOT(aproposqt()));
QObject:: connect(menu_Help,SIGNAL(clicked()),this,SLOT(allerHelp()));



//------------------------------------------------------------------------------------------------------------
}

//------------------------------les slots personnalisés--------------------------------------------------------
void MaFenetre :: quitterapp()
{
//MaFenetre:: *confiramtion= new MaFenetre(this);
//QMessageBox::question(this, "confirmation", " ?tes-vous sur de vouloir quitter ?", QMessageBox::Yes | QMessageBox::No);
//confirmation->show();
Dialog *j = new Dialog(this);
j->show();
}


void MaFenetre :: traiter()
{
MonTraitement *x = new MonTraitement(this);
x->show();
}

void MaFenetre :: info_bd()
{ Info *p = new Info(this);
p->show();
}

void MaFenetre :: stat_bd()
{ BD2 *k = new BD2(this);
k->show();
}


void MaFenetre ::aproposapp ()
{
Apropos *d = new Apropos(this);
d->show();
}

void MaFenetre ::aproposqt ()
{
Aproposqt *e = new Aproposqt(this);
e->show();
}

void MaFenetre :: allerHelp ()
{
Aide *t = new Aide(this);
t->show();
}



//-----------------------------------------destructeur----------------------------------------------------------------
MaFenetre::~MaFenetre()
{
delete ui;

}


MaFenetre.h

#ifndef MAFENETRE_H
#define MAFENETRE_H

#include <QtGui>
#include <QMessageBox>
#include <QMainWindow>
#include <QImage>
#include "ui_fenetre0.h"
//#include


#include <stdio.h>


namespace Ui {
class MaFenetre;
}


class MaFenetre : public QMainWindow, private Ui::MaFenetre{
//class MaFenetre : public QMainWindow{
Q_OBJECT
public:
MaFenetre(QWidget *parent = 0);
~MaFenetre();

private:
Ui::MaFenetre * ui;

//public:
//Ui::MaFenetre *ui; // pour pouvoir faire le destructeur de la classe MaFenetre

//----------------------------------les slots personnalisés---------------------------------------------
private slots:

void quitterapp();
void traiter();
void info_bd();
void stat_bd();
void aproposapp();
void aproposqt();
void allerHelp();



};

#endif


Dialog.cpp

#include "Dialog.h"
#include "ui_fenetreDialog.h"
#include "MaFenetre.h"
#include "ui_fenetre0.h"
#include <QPushButton>
//#include "highgui.h"
/*#include <QString>
#include <QFileDialog>
#include <QMessageBox>
#include <QGridLayout>
#include <QPixmap>
#include <QTextEdit>
#include <QInputDialog>
#include <QDialog>
#include */

Dialog:: Dialog(QWidget*):
//QDialog(),
//ui(new Ui::Dialog)

//Dialog:: Dialog(QWidget *parent ):
//QDialog(parent)
QWidget(),
ui(new Ui::Dialog)


{
//ui->setupUi(this);
setupUi(this);

//this->setWindowIcon(QIcon("accessories-text-editor.png"));
QPushButton *buttonYes=new QPushButton("Yes",this);
//buttonYes->setIcon(QIcon("valider.png"));
//buttonYes->move(100, 140);

QPushButton *buttonNo=new QPushButton("No",this);
//buttonannuler->setIcon(QIcon("fermer2.png"));
//buttonNo->move(180, 140);
//this->setWindowIcon(QIcon("video-icon.png"));


//------------------------------------------------les connexions----------------------------------------------

QObject:: connect(buttonYes,SIGNAL(clicked()),this,SLOT(fermer()));
connect(buttonNo,SIGNAL(clicked()),this,SLOT(rester()));

}
//------------------------------les slots personnalisés--------------------------------------------------------


void Dialog :: rester()
{
//this ->hide();

//MaFenetre *w = new MaFenetre(this);
MaFenetre *n = new MaFenetre();

n->show();
this ->hide();
}

void Dialog :: fermer()
{
//this ->hide();
//MaFenetre *r = new MaFenetre(this);
MaFenetre *r = new MaFenetre();

r->hide();
this ->hide();

//MaFenetre->hide();
}

Dialog::~Dialog()
{
delete ui;
}


Dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include "ui_fenetreDialog.h"
#include "ui_fenetre0.h"

//#include <QImage>
/*
#include "Dialog.h"
#include "MaFenetre.h"
#include <highgui.h>
#include <cv.h>
#include <cxcore.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include
#include "cvaux.h"
#include "highgui.h"
#include <ctype.h>
#include<math.h>

#include <QFile.h>
#include <stdio.h>
#include <string.h>
#include <QTextBrowser>
#include <QDialog>*/

namespace Ui {
class Dialog;
}

class Dialog : public QWidget, private Ui::Dialog{
// Q_OBJECT
//public:
//Dialog(QWidget *parent = 0);


//class Dialog : public QDialog, public Ui::Dialog{
//class Dialog : public QDialog, Ui::Dialog{
//class Dialog : public QDialog{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
~Dialog();



//public:

private slots:
void rester();
void fermer();

private:
Ui::Dialog *ui;

};

#endif


PS: Dialog c'est la boite de dialogue qui doit s'ouvrir quand je clique sur Exit de MaFenetre, ensuit j'aurai le choix entre Yes or NO.
evidement si je clique sur Yes MaFenetre doit se fermer et si c'est No elle doit rester, par contre Dialog doit se fermer dans les deux cas.

Aider moi svp c'est très urgent.
Merci à tous
A voir également:

2 réponses

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
1 mai 2011 à 17:46
Salut,

Avec

protected:
void closeEvent(QCloseEvent *event);

dans le .hpp

et

void Objet::closeEvent(QCloseEvent *event)
{
// Code avant la fermeture
}

dans le .cpp, il est possible de fermer (ou ne pas fermer) la fenêtre avec event->accept() et event->ignore()

Ce slot n'a pas pas besoin d'être connecté à un signal, il est appelé automatiquement avant la fermeture.

Cordialement,
Pop70
0
belloutcha Messages postés 4 Date d'inscription jeudi 10 mars 2011 Statut Membre Dernière intervention 1 mai 2011
1 mai 2011 à 23:17
d'accord.
Merci bcp pour votre aide.

Cordialement.
0