Partage
  • Partager sur Facebook
  • Partager sur Twitter

Slots et mdi marchent pas

QT (je voulais dire qt, non qT, non Qtt, AAAH! Qt, ouf!!)

Sujet résolu
    6 août 2019 à 14:18:13

    Salut, je fais un navigateur web MDI (programmes avec des sous-fenètres pour les 0 (zéros)).

    Le problème, c'est que la touche du menu Fichier->Nouvel onglet ne fait rien.

    J'ai mis une QMessageBox dans le slot personnalisé, Rien qui se passe.

    J'ai raté quelque chose???

    J'utilise Windows 10, Qt 5.13, et les addon visual studio pour Qt.

    Mon code :

    main.cpp:

    // Ne mérite même pas d'explication ;-)
    // Mais je le mets quand même :
    
    #include "fenetre.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
    	QApplication app(argc, argv);
    	Fenetre fenetre;
    	fenetre.show();
    	return app.exec();
    }
    

    Fenetre.h:

    #ifndef FENETRE
    #define FENETRE
    #include <QMainWindow>
    #include <QtWidgets>
    #include <QtWebEngine>
    #include <QtWebEngineWidgets>
    
    class Fenetre : public QMainWindow
    {
    	Q_OBJECT
    public:
    	Fenetre();
    private:
    	QVBoxLayout* layout = new QVBoxLayout();
    	QHBoxLayout* boutons = new QHBoxLayout();
    	QLineEdit* adresse = new QLineEdit();
    	QComboBox* aFaire = new QComboBox();
    	QPushButton* aller = new QPushButton(tr("Aller"));
    	QToolBar* barreOutils = new QToolBar();
    	QToolBar* barreOnglets = new QToolBar();
    	QMenuBar* barreMenus = new QMenuBar();
    	QWebEngineView* web = new QWebEngineView();
    	QAction* quitter = new QAction(tr("&Quitter"), this);
    	QAction* actualiser = new QAction(tr("&Actualiser"), this);
    	QAction* arreter = new QAction(tr("&Arrêter"), this);
    	QAction* precedente = new QAction(tr("Page &précedente"), this);
    	QAction* suivante = new QAction(tr("Page &suivante"), this);
    	QAction* nouvelOnglet = new QAction(tr("Nouvel ongle&t"), this);
    	QAction* historique = new QAction(tr("&Historique"), this);
    	QAction* favoris = new QAction(tr("&Favoris"), this);
    	QAction* parametres = new QAction(tr("&Paramètres"), this);
    	QMenu* fichier = new QMenu("Fichier");
    	QMenu* navigation = new QMenu("Navigation");
    	QTabWidget* onglets = new QTabWidget();
    	QMenu* outils = new QMenu("Outils");
    	QList<QWidget> widgets;
    	QMdiArea *mdi = new QMdiArea();
    	QWidget bidon;
    	
    private slots:
    	//void nouvelOnglet();
    	//void actualiser();
    	//void arreter();
    	//void suivante();
    	//void precedente();
    	void aller2();
    	//void nouvelOnglet2();
    };
    #endif
    


    Fenetre.cpp :

    #include "fenetre.h"
    
    Fenetre::Fenetre()
    {
    	QWidget* widgetemporaire = new QWidget();
    	barreMenus->addMenu(fichier);
    	barreMenus->addMenu(navigation);
    	barreMenus->addMenu(outils);
    	fichier->addAction(quitter);
    	fichier->addAction(historique);
    	fichier->addAction(favoris); 
    	fichier->addAction(nouvelOnglet);
    	quitter->setShortcut(QKeySequence("Ctrl+Alt+Q"));
    	
    	connect(quitter, SIGNAL(triggered()), qApp, SLOT(quit()));
    	aller2();
    	aller2();
    	connect(nouvelOnglet, SIGNAL(triggered()), this, SLOT(aller()));
    	layout->addWidget(onglets);
    	setMenuBar(barreMenus);
    	widgetemporaire->setLayout(layout);
    	
    	setCentralWidget(mdi);
    }
    void Fenetre::aller2()
    {
    	QMessageBox::information(this, "Fait", "Fait");
    	QMdiSubWindow* mimiGeignarde = new QMdiSubWindow();
    	mimiGeignarde = mdi->addSubWindow(&QWidget());
    }
    
    /*void Fenetre::actualiser()
    {
    
    }
    
    void Fenetre::arreter()
    {
    
    }
    
    void Fenetre::suivante()
    {
    
    }
    
    void Fenetre::precedente()
    {
    
    }
    
    /*void Fenetre::nouvelOnglet2()
    {
    	
    }
    */




    -
    Edité par NilDoudoux1 6 août 2019 à 14:22:53

    • Partager sur Facebook
    • Partager sur Twitter
      8 août 2019 à 14:00:29

      Une réponse????????????????
      • Partager sur Facebook
      • Partager sur Twitter
        8 août 2019 à 22:12:56

        Bonjour,

        Le slot que tu appelles ligne 18 se nomme aller(), celui que tu crées se nomme aller2()...

        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

          8 août 2019 à 22:27:22

          Ce genre d'erreur n'est pas possible avec la nouvelle syntaxe (de bientôt 10ans...)

          https://doc.qt.io/qt-5/signalsandslots.html

          • Partager sur Facebook
          • Partager sur Twitter

          Slots et mdi marchent pas

          × 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