IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

Récupérer un objet parent

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Bonjour à tous et toutes,

    Je voulais savoir s'il y avait moyen de récupérer le 'parent' d'un objet?
    J'ai en fait trois classes:
    QMainWindow MainWindow
    QGraphicsView Fenetre
    QGraphicsScene Menu

    Dans leur constructeur j'ai implémenté ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        //...
    }
     
    Fenetre::Fenetre(QMainWindow *parent)
        : QGraphicsView(parent)
    {
        //...
    }
     
    Menu::Menu(QGraphicsView *parent)
        : QGraphicsScene(parent)
    {
        //...
    }
    Dans mon menu j'y ai ajouté un QPushButton permettant de quitter l'application grâce au couple signal/slot comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connect(bt_quitter,SIGNAL(clicked()),this->parent()->parent(),SLOT(close()));
    Ce qui fonctionne bien. Mais imaginons que je veille utiliser des attributs déclarés dans ma classe MainWindow depuis mon objet Menu. Comment dois-je m'y prendre?
    Merci d'avance.

    Je veux parler d'une sorte de transtypage :
    QMainWindow mainw = QMainWindow( this->parent()->parent() );
    Vu que je suis sûr de leur type, non?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MainWindow* Menu::mainWindow() {
      return (MainWindow*) parent()->parent();
    }
    Ça pourrait fonctionner, mais ce serait ruineux niveau encapsulation du code, et il y aura des problèmes de références croisées (prévoir une prédéclaration de MainWindow dans Menu.h).


    Il me semble qu'il serait plus judicieux de communiquer de Menu vers MainWindow grâce à des signaux/slots :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //MainWindow.cpp
     
    MainWindow::MainWindow() {
     
      // ...
     
      connect(maFenetre()->monMenu(), SIGNAL(closeButtonPushed()), this, SLOT(close()));
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Menu.h
     
    class Menu {
      // ...
    signals:
      void closeButtonPushed();
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //Menu.cpp
     
    Menu::Menu() {
      //...
      connect(bt_quitter, SIGNAL(clicked()), this, SIGNAL(closeButtonPushed()));
    }

  3. #3
    Membre confirmé Avatar de arkham55
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2010
    Messages : 179
    Par défaut
    Ah oui dans ce sens bien sûr! Merci pour ton aide =)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Récupérer la window parente d'un objet
    Par Neilime05 dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 22/03/2012, 16h34
  2. Récupérer l'objet parent du contenu d'une balise object.
    Par Difré91 dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 13/03/2011, 17h07
  3. Récupérer un objet d'une liste déroulante
    Par Hell dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/01/2005, 14h59
  4. [servlet][bean]comment récupérer l'objet request
    Par otminou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/09/2004, 14h40
  5. Réponses: 4
    Dernier message: 15/09/2004, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo