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

Qt Discussion :

Ouvrir une QMainWindow dans une QMainWindow Mère


Sujet :

Qt

  1. #1
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut Ouvrir une QMainWindow dans une QMainWindow Mère
    Bonjour, j'ai une appli QApplication, qui "instancie et affiche une QMainWindow" de facon très classique. Comme c'est écrit dans la doc "creating a mainWindow"

    Maintenant j'aimerais accéder à une autre fenêtre depuis cette MainWindow,
    que dois je faire :
    *ouvrir une nouvelle QMAinWindow depuis ma QMainWindow premiere, comment faire ?
    *ouvrir un QWidget pour éviter de faire se concurrencer 2 QMainWindow ?
    * utiliser un QWizard et clearer/redessiner une autre interface ?


    Dois je créer une seule classe par fenêtre ?
    Ou puis je utiliser plusieurs fichier ui_Window.h dans une seule classe ?

    Je début en prog et en IHM classique comme ca, merci d'avance pour toutes vos réponses.

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ttone Voir le message
    Maintenant j'aimerais accéder à une autre fenêtre depuis cette MainWindow,
    que dois je faire :
    *ouvrir une nouvelle QMAinWindow depuis ma QMainWindow premiere, comment faire ?
    *ouvrir un QWidget pour éviter de faire se concurrencer 2 QMainWindow ?
    * utiliser un QWizard et clearer/redessiner une autre interface ?
    Ben ca depend ce que tu veut faire...
    En gros tu créé ta nouvelle widget(QMAinWindow, QWidget ,QWizard ,QDialog...)
    sans parent. Tu aura ouvert une nouvelle Fenetre.
    Le mieux (plus simple) est surement QDialog

  3. #3
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Merci pour ta réponse, en gros je veux avoir une appli "une fenetre", classique, et avoir une fenetre qui s'ouvre par un click sur bouton...

    Pour l'instant j'arrive sans soucis à faire une QAppli qui affiche 2 fenetre instanciées chacune par une classe...

    Bon mais quand j'essai d'inclure ca dans une action relative à un SIGNAL(clicked) ... je m'emmele le clavier... je dois juste ajouter ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FENETREFILLE fenetre;
    fenetre.show();
    ?

    L'exemple type de ce que je veux faire, c'est ouvrir une fenêtre Préférences, ou plus exactement... ouvrir un mixer comme dans EZDrummer

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void f()
    {
    FENETREFILLE fenetre;
    fenetre.show();
    }
    Qu'elle est la durée de vie de fenetre?
    Je te laisse repondre ?
    si tu comprend pas je t'expliquerai

  5. #5
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    ok merci, j'avais du mal, je commence à me chauffer sur les fenetre. Sa durée de vie ? Jusqu'à l'extinction du programme...

    Sinon suis je trop naif de croire qu'un "" surffira ?

  6. #6
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Ok le café commence à faire effet, lol,

    Pour la durée de vie, heu... disons que je voudrais pourvoir cacher/afficher la fenetre, mais pas modifier son contenu entre temps (laisser la fenetre "vivante" donc ?)

    Ma fenetre fille est typiquement un panneau de controle, qu'on ouvre depuis la fentre mère, dans ce panneau on ajuste quelques parametre, on le ferme, on le rouvre, rien n'a changé...

  7. #7
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void f()
    {
    //fenetre est créé
    FENETREFILLE fenetre;
    fenetre.show();
    }//fenetre est détruite

  8. #8
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Qu'elle est la durée de vie de fenetre?
    Je te laisse repondre ?
    Aie en effet je viens de teste ca, ... comment puis prolonger sa durée de vie ?

  9. #9
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ttone Voir le message
    Aie en effet je viens de teste ca, ... comment puis prolonger sa durée de vie ?
    ??tu debute en prog?
    Faut alloué dynamiquement on objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void f()
    {
    //fenetre est créé dynamiquement
    FENETREFILLE  * pFenetre = new FENETREFILLE  ;
    pFenetre ->show();
    }

  10. #10
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    ah ouais, oula, ca va pas aujourd'hui... en meme temps oui c'est ma premiere GUI "classique", avant ca j'ai fait d'ot'choz, ...

    donc là du coup ca va tuer la réf/pointeur mais pas l'objet ?

    Oké doc
    thanks

  11. #11
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    mouais, le problème reste que je veux envoyer qu'une fenetre, avec une telle fonction, on en génère 1/click.

    j'aimerai passer par autre chose qu'un booléan...

    alors j'ai essayé de faire passer FENETREFILLE en objet public de ma classe gérant la fenetre mère,
    mais là ca pose problème, apparemment je ne peux pas passer un pointeur en attribut de la classe "fenetre mere"...

  12. #12
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ttone Voir le message
    mouais, le problème reste que je veux envoyer qu'une fenetre, avec une telle fonction, on en génère 1/click.
    aprés tu peut afficher /cacher une widget par show()/hide()

    j'aimerai passer par autre chose qu'un booléan...
    ??


    alors j'ai essayé de faire passer FENETREFILLE en objet public de ma classe gérant la fenetre mère,
    mais là ca pose problème, apparemment je ne peux pas passer un pointeur en attribut de la classe "fenetre mere"...
    Rien compris... dsl.
    Peut tu mettre un peu de code?

  13. #13
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    'aimerai passer par autre chose qu'un booléan.
    pour emprecher l'affichage de plusieurs fenetre, car j'appelle f() lors d'un click sur un bouton

  14. #14
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    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
    21
    #include "ui_GUI.h"
    #include "sndfile.h"
    #include "Mixer.h"
     
    using namespace std;
     
    class GUI : public QMainWindow
    {
        Q_OBJECT
    public:
        GUI(QWidget *parent = 0);
     
    private slots:
     
    	void paintEvent(QPaintEvent* f);
    	char ouvrir();
    	void openFENETREFILLE();
     
    private:
    	Mixer * mix = new Mixer;
    };

  15. #15
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Mixer * mix = new Mixer;
    ca me pose soucis,
    je comptais appeler :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void GUI::openFENETREFILLE(){
    				mix->show();
     
    	};
    plutot que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void GUI::openFENETREFILLE(){
    		Mixer * mix = new Mixer;
    		mix->show();
     
    	};

  16. #16
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ttone Voir le message
    Mixer * mix = new Mixer;
    dans la définition de la class?????
    La t'as des grosse lacune de C++....
    Tu doit faire le new dans le createur de ta class

  17. #17
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    à vrai dire j'ai zappé les new depuis que j'ai "switché" de java à c++

    mais c'est ce qu'il me semblait...


    je teste :

    ...

    évidemment ca marche,
    mais ca ne résout pas mon problème d'unicité.


    Je voudrais une seule fenêtre fille, hors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(this->interface.pushButton,SIGNAL(clicked()),this,SLOT(openFENETREFILLE()));

  18. #18
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Citation Envoyé par ttone Voir le message
    évidemment ca marche,
    mais ca ne résout pas mon problème d'unicité.
    ???
    avec ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    void GUI::openFENETREFILLE(){
    				mix->show();
    	};
    ?????
    je ne comprend pas ton problème

  19. #19
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    c'est simple pourtant, si tu as une action "click sur un bouton", si tu clique 10 fois sur le boutn, 10 fenêtres s'ouvrent.

    Hors je n'en veux qu'une, ce que j'appelle ''unicité''

    Je pourrais mettre un bool et le switcher dès la première ouverture mais c'est le genre de chose que j'aime dépasser.

    Je pensais tester sans torp d'espoir de passer Mixer en attribut... mais évidemment mix-->show() fait un nouvel affichage à chqaue fois

  20. #20
    Membre actif Avatar de ttone
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    589
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 589
    Points : 203
    Points
    203
    Par défaut
    Ok ca marche et ca n'ouvre qu'une seule fenêtre.

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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