[Qt] Gestion de addSubWindow

Résolu
frip -  
 frip -
Bonjour,

J'essaie de programmer un éditeur de texte basique pour me faire la main. Sauf que je rencontre un petit problème.
Je veux implémenter un SLOT qui crée dans mon cas crée un nouveau document et ouvre une nouvelle fenêtre. La zone centrale est de type MDI donc j'essaie de le faire avec la fonction addSubWindow. Mon code compile bien, le programme ne plante à aucun moment, mais lorsque je clique sur Nouveau, rien ne se passe et ne s'affiche.

J'aimerais comprendre mon erreur.

merci d'avance.

Voici le code

//////////////////////Le .h///////////////////////////////
#ifndef HEADER_FENPRINCIPALE
#define HEADER_FENPRINCIPALE

#include <QtGui>

class FenPrincipale : public QMainWindow
{
Q_OBJECT
public:
FenPrincipale();


public slots:
void CreationFenetre();

private:

QMdiArea *zoneCentrale;
QTextEdit *zoneTexte1;
QMdiSubWindow *sousFenetre1;
};


#endif

//////////////////////Le .CPP////////////////////////////

#include "FenPrincipale.h"

FenPrincipale::FenPrincipale()
{
// Création des menus

QMenu *menuFichier = menuBar()->addMenu("&Fichier");
QAction *actionNouveau = menuFichier->addAction("&Nouveau");
actionNouveau->setShortcut(QKeySequence("Ctrl+N"));
QAction *actionOuvrir = menuFichier->addAction("&Ouvrir");
actionOuvrir->setShortcut(QKeySequence("Ctrl+O"));
QAction *actionSauver = menuFichier->addAction("&Enregistrer");
actionSauver->setShortcut(QKeySequence("Ctrl+S"));
QAction *actionSauverSous = menuFichier->addAction("Enregistrer sous...");

QAction *actionImprimer = menuFichier->addAction("&Imprimer");
actionImprimer->setShortcut(QKeySequence("Ctrl+P"));
QAction *actionQuitter = menuFichier->addAction("&Quitter");
actionQuitter->setShortcut(QKeySequence("Ctrl+Q"));

QMenu *menuEdition = menuBar()->addMenu("&Edition");

QMenu *menuFormat = menuBar()->addMenu("&Format");
QAction *actionPolice = menuFormat->addAction("&Police");

QMenu *menuAffichage = menuBar()->addMenu("&Affichage");
QAction *actionBarre = menuAffichage->addAction("&Barre d'état");



// Création de la zone centrale

zoneCentrale = new QMdiArea;
QMdiSubWindow *sousFenetre1;
QTextEdit *zoneTexte1;

setCentralWidget(zoneCentrale);

connect(actionQuitter, SIGNAL(triggered()), qApp, SLOT(quit()));
connect(actionNouveau, SIGNAL(triggered()), this, SLOT(CreationFenetre()));

}


void FenPrincipale::CreationFenetre()
{

zoneTexte1 = new QTextEdit;
sousFenetre1= new QMdiSubWindow;
sousFenetre1 = zoneCentrale->addSubWindow(zoneTexte1);

}




///////////////Le main ///////////////////////////////
#include <QApplication>
#include <QtGui>
#include "FenPrincipale.h"

int main(int argc, char *argv[])
{
QApplication app(argc, argv);

FenPrincipale fenetre;
fenetre.show();

return app.exec();
}
A voir également:

3 réponses

frip
 
J'ai essayer d'ajouter this->show() mais ça ne change rien.
1
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Mais ce n'est pas 'this' qu'il faut montrer, mais ta nouvelle fenêtre !
sousFenetre1= new QMdiSubWindow;
...
sousFenetre1->show();
Bonne continuation.
0
Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Il manque peut être un appel à show lors de la création.
0
frip
 
Merci
0