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 :

Gestion de plusieurs fenêtres à l'ouverture

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Gestion de plusieurs fenêtres à l'ouverture
    Bonjour à toutes et tous .

    Au lancement de mon projet ,j'ouvre deux fenêtres , mais cela ne me donne pas le résultat escompté .

    Je voudrais une fenêtre avec des dimensions fixes et une extensible .

    Est-il possible de les "liées" ?? ex:

    fen 1 fixe avec des pushButton .
    fen 2 extensible avec un tableView .

    Dois-je obligatoirement créer :
    Deux seul dossiers fen.h et fen.cpp ou
    Quatre dossiers fen.h/fen.cpp et fen1.h/fen1.cpp .

    Cordialement .

  2. #2
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Tu auras besoin de 2 classes différentes en effet mais tu peux mettre autant de classes que tu veux dans un couple de fichiers fen.h/fen.cpp.

    Si tu veux faire en sorte que les deux fenêtres ont des propriétés partagés, tu peux les hérités toutes les deux d'une classe commune.

    Quand tu parles de lier, tu veux parler de communication entre les deux ?
    Si c'est le cas, utilise le système de signal et slots avec une instance qui envois un signal (ta fenêtre avec ton bouton par exemple) et une instance qui le reçois avec un slot (ta fenêtre avec ta tableView).

    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Gestion de plusieurs fenêtres .
    Bonjour à toutes et tous .
    johnlamericain
    Si c'est le cas, utilise le système de signal et slots avec une instance qui envois un signal (ta fenêtre avec ton bouton par exemple) et une instance qui le reçois avec un slot (ta fenêtre avec ta tableView).
    Merci .
    Oui c'est ce que je pensais pouvoir faire . Mais cela ne fonctionne pas . (J'ai surement raté un épisode.)
    Au départ j'ai créé une fenêtre avec fenetre.h et fenetre.cpp ensuite j'ai créé
    une deuxième fenêtre avec fenetre1.h et fenetre1.cpp . Je ne parviens pas à relier les boutons de la fenetre1 au code de la première fenetre , mais ce n'est peut-être pas possible .

    Cordialement.

  4. #4
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Go'Gaule Voir le message
    Bonjour à toutes et tous .


    Merci .
    Oui c'est ce que je pensais pouvoir faire . Mais cela ne fonctionne pas . (J'ai surement raté un épisode.)
    Au départ j'ai créé une fenêtre avec fenetre.h et fenetre.cpp ensuite j'ai créé
    une deuxième fenêtre avec fenetre1.h et fenetre1.cpp . Je ne parviens pas à relier les boutons de la fenetre1 au code de la première fenetre , mais n'est peut-être pas possible .

    Cordialement.
    Peux tu nous montrer un peu de ton code ? Comment accède tu aux instances des boutons de la fenêtre 1 pour les connecter à la tableView ?

    Cela dit, quel est l’intérêt d'avoir 2 fenêtres ? Je ne connais pas de programme qui fait ça, c'est plutôt étrange comme interface. Une raison ?

  5. #5
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    Tu connais pas The Gimp ?

  6. #6
    Rédacteur

    Avatar de johnlamericain
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    3 742
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 3 742
    Par défaut
    Citation Envoyé par Troudhyl Voir le message
    Tu connais pas The Gimp ?
    Si c'est l'utilisation que tu veux en faire, tu devrais regarder du coté de QToolBar et QToolBox plutôt que de réinventer la roue.

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Relations fonctions d'une classe à une autre .
    Bonjour à toutes et tous .

    Je pense que mon problème est :
    - Comment fait-on pour relier une fonction situé dans la classe A avec la classe B ou vice-versa .

    Merci .

    Je cherche et ne trouve pas .
    fenetre.h

    void ajouterPartie() .

    fenetre.cpp

    Fenetre::ajouterPartie() {
    }
    fenetre2.cpp

    connect(ajouParBtn,SIGNAL(clicked()),this , SLOT(ajouterPartie()));

    Cela me renvoie une erreur de non connexion , pas de déclaration.

    Cordialement.

  8. #8
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    connect(ajouParBtn,SIGNAL(clicked()),this , SLOT(ajouterPartie()));
    "this" n'a pas de slot "ajouterPartie", c'est ton objet Fenetre qui en a un.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Gestion de plusieurs fenêtres .
    Bonjour à toutes et tous .

    Merci Troudhyl .
    Troudhyl
    "this" n'a pas de slot "ajouterPartie", c'est ton objet Fenetre qui en a un.
    Oui . C'est ce que je pensais aussi , mais comment le lui dire ?? Je ne trouve pas .

    Cordialement.

  10. #10
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    A la place de this, tu mets un pointeur vers l'objet (instance de Fenetre) tu affiches. Ce 3e paramètre de connect() est le receiver.

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Gestion de plusieurs fenêtres .
    Bonjour à toutes et tous .

    J'ai écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
        QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
        Fenetre fenetre ;
        Fenetre2 fenetre2 ;
        fenetre.show();
        fenetre2.show();
     
        return app.exec();
    }
    Bien cela ouvre mes fenêtres , mais , je ne sais comment expliquer , on dirait que les fenêtres sont totalement indépendantes . Les fichiers actions menu , n' apparaissent plus lorsque les deux fenêtres sont ouvertes .

    J'ai essayé une autre solution mais j'ai plusieurs erreurs .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    int main(int argc, char **argv)
    {
        QApplication app(argc, argv);
        QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
     
        Fenetre2* maFenetre2 = new Fenetre2();
        Fenetre* maFenetre = new Fenetre( maFenetre2);
     
        return app.exec();
    }
    Erreurs :
    In function "int main(int,char**)':
    no matching function for call to 'Fenetre::Fenetre(QMainWindow*)
    Fenetre::Fenetre(const Fenetre&)
    unused variable 'maFenetre'

    Cordialement.

  12. #12
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut
    connect prend des pointeurs sur les objets, en paramètre. Donc &fenetre2 et &fenetre (l'adresse de ces objets).

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Gestion de plusieurs fenêtres .
    Bonsoir à toutes et tous .
    Troudhyl
    Mais il faut l'écrire ce constructeur, et ne pas confondre pointeur/adresse/référence (je dis ça car le Fenetre::Fenetre(const Fenetre&) m'intrigue, tu avais commencé à le faire ?).
    Oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Fenetre::Fenetre(QWidget* parent, Fenetre2* fenetre2) :
    _fenetre2(fenetre2)
    {
    }
    Mais d'une façon ou d'une autre , cela ne fonctionne pas .

    Cordialement.

  14. #14
    Membre Expert

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2009
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2009
    Messages : 1 009
    Par défaut


    Et s'il est vide, il ne va pas connecter grand chose.

    Je me répète mais il faudrait que tu comprennes ce qu'est un constructeur, ce que tu peux y faire... Perso je veux bien t'aider mais j'ai pas le courage de t'écrire un cours sur les bases (je suis pas une référence non plus).

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut Gestion de plusieurs fenêtres .
    Bonjour à toutes et tous .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Fenetre2* maFenetre2 = new Fenetre2();
        Fenetre* maFenetre = new maFenetre(NULL, maFenetre2);
        return app.exec();
    J'obtiens ces lignes d'erreurs à la compilation :
    expected type-specifier before 'maFenetre'
    cannot convert int* to 'Fenetre' in initialization
    expected','or';'before 'maFenetre'
    unused variable 'maFenetre2'
    unused variable 'maFenetre'

    Troudhyl
    Et s'il est vide, il ne va pas connecter grand chose.
    Oui mais encore ?? .

    Merci à vous .

    Cordialement.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 182
    Par défaut
    Je me suis trompé .. oups!

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/05/2015, 14h54
  2. gestion de plusieurs fenêtres en silverlight
    Par hbib85 dans le forum Silverlight
    Réponses: 3
    Dernier message: 02/03/2009, 08h58
  3. Gestion de plusieurs fenêtres
    Par KiKiTiTi dans le forum GTK+ avec C & C++
    Réponses: 8
    Dernier message: 08/08/2008, 15h19
  4. Réponses: 2
    Dernier message: 26/01/2007, 18h54
  5. [Outlook] ouverture plusieurs fenêtres avec même target
    Par seb_m dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 19/01/2007, 17h25

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