Fermer2
FarewellLe 22/07/2012 à 12:16
yop,


Je programme une application avec Qt, QtDesigner et Qt Creator.

Je veux pouvoir accéder à l'interface de la fenêtre principale depuis un peu partout dans mon programme. J'ai donc créé une variable globale de type MainWindow* :
#ifndef MW_H
#define MW_H


#include "mainwindow.h"

extern MainWindow* mw;


#endif // MW_H

et dans main.cpp :
MainWindow* mw;


int main(int argc, char* argv [])
{
    QApplication a (argc, argv);
    MainWindow w;
    mw = &w;
    w.show ();
    return a.exec ();
}

L'ennui, c'est que le membre ui de MainWindow est privé :
namespace Ui {
    class MainWindow;
}


class MainWindow : public QMainWindow
{
        Q_OBJECT

    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();


    private slots:
        void on_actionNewConnexion_triggered();
        void on_actionQuit_triggered();


    private:
        Ui::MainWindow *ui;
};

J'ai donc voulu faire un accesseur :
Ui::Mainwindow* getUI ();
J'ai essayé d'implémenter la méthode comme ça :
Ui::Mainwindow* MainWindow::getUI ()
{
    return this->ui
}

Indépendamment de la propreté d'un tel code (exposition d'un membre privé), ça ne fonctionne pas, je pense que c'est le Namespace qui me fout dedans. Je ne sais pas m'en servir en fait.

Alors la question c'est comment faire proprement pour qu'une classe quelconque puisse accéder à l'UI de la fenêtre principale pour ajouter un tab par exemple, ou pour écrire dans un tab de log (le centre de ma fenêtre principale est un QTabWidget) ?


Merci d'avance. smile