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

  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 Gestion de plusieurs fenêtres .
    Bonjour à toutes et tous .

    Merci pour votre aide .

    Je vais essayer de m'expliquer :

    Cela est toujours en rapport avec mon projet de logiciel de gestion de concours .
    Toutes les fonctions désirées , "marchent".
    Le problème est :
    -Ma fenêtre principale (Pour le moment .) est divisée en deux parties .
    _A gauche un tableView ou s'affiche les données .(Nom . Parties . Total.Classement .. )
    _A droite des pushButton qui appellent des QInputDialog servant à entrer les données , et à ajouter des colonnes (Parties.).

    Au fur et à mesure du paramétrages de la tableView ,ajout de parties ,elle grandi , mais les boutons suivent et cela à un look désastreux .
    Je cherche donc à séparer la tableView des boutons ou à figer la taille des boutons .

    Cordialement.

  8. #8
    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
    Quel type de layout utilise tu ?

    Regarde du coté de addStrech() pour stopper l'expansion de tes boutons?

  9. #9
    Membre confirmé
    Homme Profil pro
    Technicien Supérieur en Développement Industriel
    Inscrit en
    Février 2010
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Supérieur en Développement Industriel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 65
    Par défaut
    Salut,

    J'ai rencontré un problème plus ou moins identique au tien, et j'ai utilisé un QWidget::setGeometry( int x, int y, int w, int h ).

    c'est certainement pas le plus optimisé mais ça peux être une solution de transition.
    Et donc à chaque fois que ta tableView est modifié tu peux repositionner tes boutons.

  10. #10
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2007
    Messages : 111
    Par défaut
    Bonjour,

    as-tu essayé le QSplitter ?

    je pense que la fonction void QSplitter::setStretchFactor ( int index, int stretch ) doit faire ce que tu veux.

  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 .

    Alors , Merci pour vos réponses .

    abdou57
    as-tu essayé le QSplitter ?
    Oui et non , mais même comportement .

    La seule solution pour que cela soit "propre et joli" : Deux fenêtres .

    Donc je vais essayer de faire fonctionner tout cela , c'est pas gagné .

    Comment faire pour ne pas tout réécrire et lier les classes de fenêtre avec fenêtre2 .
    J'ai une classe dans fenetre.cpp qui ajoute une ligne (1 équipe ou 1 joueur.)
    __void fentetre::ajouterEquipe()
    . .Une ligne de code : deconnect(equAjouBtn ... )(Un message d'erreur was not declared in the scope .)
    et connect(equAjouBtn ... )
    Comment lui dire que cela ce trouve sur fenetre2.cpp ???

    Cordialement.

  12. #12
    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 Suite ..
    Bonjour à toutes et tous .

    Je poursuis laborieusement mon apprentissage .

    Ouvrir deux fenêtres et les lier et trop compliqué pour moi qui mélange toujours les définitions ..

    Donc je change de tac -tic et , créer une fenêtre principale avec un boutons qui ouvre une fenêtre secondaire , facile me direz-vous ..

    Je me permets de vous soumettre ce petit projet .1006zip
    Pour lequel rien ne ce passe une fenêtre vide ???
    Merci d'avance.
    Cordialement.
    Fichiers attachés Fichiers attachés

  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 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.

  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
    connect(ajouParBtn,SIGNAL(clicked()),this , SLOT(ajouterPartie()));
    "this" n'a pas de slot "ajouterPartie", c'est ton objet Fenetre qui en a un.

  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 .

    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.

  16. #16
    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.

  17. #17
    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.

  18. #18
    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 n'as pas l'air de comprendre ce que tu fais, ce qu'est un constructeur, etc... Il faudrait commencer par ça, parce qu'avec ta dernière tentative on voit que tu as des lacunes sur les bases.

    Ensuite tu crées les deux objets dans une fonction (main est une fonction). Donc ils n'ont comme lien que ce lieu commun de création. C'est donc dans le main que tu dois connecter leurs signaux.
    Il te faut alors un signal de fenetre à connecter à un autre de fenetre2. Or toi tu veux que ce soit au clic d'un bouton de la fenêtre. Tu dois donc déclencher un signal que tu crées toi-même, lors du clic de ce bouton.

    Dans Fenetre2.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    signals:
        void boutonClicked();
    Dans Fenetre2.cpp (constructeur) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(ajouParBtn,SIGNAL(clicked()), SIGNAL(boutonClicked()));
    Cette connexion relayera le signal pour que fenetre2 en émette un. Donc ensuite dans main.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connect(fenetre2, SIGNAL(boutonClicked), fenetre, SLOT(ajouterPartie()))
    http://doc.qt.nokia.com/stable/qobject.html#connect

  19. #19
    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
    Cette connexion relayera le signal pour que fenetre2 en émette un. Donc ensuite dans main.cpp :
    connect(fenetre2, SIGNAL(boutonClicked), fenetre, SLOT(ajouterPartie()))
    Oui , mais ou et comment j'insère cela dans main.cpp .??

    Cordialement;

  20. #20
    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
    Oui c'est vrai, il te faut peut-être écrire : QObject::connect(....
    N'importe où entre la création des objets et le return bien sûr.

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