Partage
  • Partager sur Facebook
  • Partager sur Twitter

Slot personalisé

    20 juin 2008 à 17:06:04

    J'essaye de faire un éditeur de texte mais je bloque à un endroit. J'ai regardé le formu mais j'ai pas trouvé de solution alors je pose ma question:
    J'utilise QMainWindow avec une structure MDI (Multiple Document Interface).
    Donc le programme se lance :

    Image utilisateur

    J'ai fais un menu, dessus j'ai le menu fichier -> Nouveau qui permet d'ouvrir de nouvelle zone de texte dans la zone centrale.

    Je veux faire un slot qui permet de me créer cette zone de texte.

    Citation : Définition de la zone centrale


    QMdiArea *zoneCentrale = new QMdiArea(this);
    setCentralWidget(zoneCentrale);


    Citation : Création du menu

    QMenu *menuFichier = menuBar()->addMenu("&Fichier");
    QAction *actionNouveau = menuFichier->addAction("&Nouveau");
    connect(actionNouveau, SIGNAL(triggered()), zoneCentrale, SLOT(nouvelleZoneTexte()));



    Donc je fais un slot nouvelleZoneTexte que j'implémente dans le .h et .cpp :

    Citation : .cpp

    void FenPrincipale::nouvelleZoneTexte()
    {
    //Création de la sous fenetre de texte
    QTextEdit *zoneTexte1 = new QTextEdit;
    QMdiSubWindow *sousFenetre1 = addSubWindow(zoneTexte1);
    }



    Le pb c'est qu'il connait pas addSubWindow alors que c'est une fonction public de QMdiArea et zoneCentrale est un pointeur de type QMdiArea.

    C'est peut-être un problème d'héritage car la classe de ma fenêtre à hérité de QMainWindow et non pas de QMdiArea.

    Merci beaucoup pour vos réponses.
    N'hésitez pas à posez des question si je me suis mal exprimé.
    • Partager sur Facebook
    • Partager sur Twitter
      20 juin 2008 à 17:18:17

      non tu places ton "QMdiArea *zoneCentrale" en tant que variable de ta classe.
      • Partager sur Facebook
      • Partager sur Twitter
        20 juin 2008 à 18:52:20

        Je viens de le faire :

        Citation : .h

        class FenPrincipale : public QMainWindow
        {
        Q_OBJECT

        public:
        FenPrincipale();


        public slots:
        void ouvrirDialogueAboutWPA();
        void ouvrirDialogueAide();
        void nouvelleZoneTexte();


        private:
        QMdiArea *zoneCentrale;

        };



        Citation : .cpp


        FenPrincipale::FenPrincipale()
        {

        //Titre du prog et icone
        setWindowTitle ("WordPadAlex");
        setWindowIcon (QIcon("images/icone.png"));

        //Définition de la zone centrale
        zoneCentrale = new QMdiArea(this);
        setCentralWidget(zoneCentrale);

        //Création du menu
        QMenu *menuFichier = menuBar()->addMenu("&Fichier");
        QAction *actionNouveau = menuFichier->addAction("&Nouveau");
        connect(actionNouveau, SIGNAL(triggered()), zoneCentrale, SLOT(nouvelleZoneTexte()));
        ...
        }

        void FenPrincipale::nouvelleZoneTexte()
        {
        //Création de la sous fenetre de texte
        QTextEdit *zoneTexte1 = new QTextEdit;
        QMdiSubWindow *sousFenetre1 = addSubWindow(zoneTexte1);
        }



        Donc Voila à peu près où j'en suis, et il me dit toujours :

        'addSubWindow' undeclared (first use this fonction)

        Merci d'avance de ton aide
        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2008 à 19:52:23

          utilise la balise code et non citation, merci.

          ... que dire ...

          Citation

          QMdiSubWindow *sousFenetre1 = zoneCentrale->addSubWindow(zoneTexte1);


          :magicien:
          • Partager sur Facebook
          • Partager sur Twitter

          Slot personalisé

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown