[Qt] Gestion de addSubWindow

Résolu/Fermé
frip - 18 févr. 2010 à 15:09
 frip - 18 févr. 2010 à 16:58
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

J'ai essayer d'ajouter this->show() mais ça ne change rien.
1
loupius Messages postés 697 Date d'inscription dimanche 1 novembre 2009 Statut Membre Dernière intervention 31 décembre 2017 148
18 févr. 2010 à 16:34
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 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
18 févr. 2010 à 15:42
Il manque peut être un appel à show lors de la création.
0
Merci
0