[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
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion photo gratuit - Guide
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Gestion autorisation application android - Guide
- Logiciel gestion garage - Télécharger - Organisation
3 réponses
loupius
Messages postés
789
Statut
Membre
148
Mais ce n'est pas 'this' qu'il faut montrer, mais ta nouvelle fenêtre !Bonne continuation.