[Qt] Gestion de addSubWindow
Résolu
frip
-
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();
}
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:
- [Qt] Gestion de addSubWindow
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion photo gratuit - Guide
- Gestion autorisation application android - Guide
- Logiciel gestion cabinet médical gratuit - Télécharger - Organisation
3 réponses
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 !
Bonne continuation.