DialogStart est votre classe, vous pouvez mettre des qDebug() là où vous le souhaitez.
Version imprimable
DialogStart est votre classe, vous pouvez mettre des qDebug() là où vous le souhaitez.
Oui, ça je sait mais ce que je cherche particulièrement c'est:
qDebug() << EVENT ?;
Je suppose que event seul ne suffit pas ! Donc il y a peut-être moyen de savoir ce qui se passe en scrutant celui-ci.
Au passage, j'ai remarqué que lorque on utilisait event, il était souvent déclarer avec un pointeur... Je m'attends donc à un résultat du type 0x... et moi, je cherche à voir ce qui accept ou reject ;)
Je ne suis peut-être pas assez clair remarque :roll:
Regardez la documentation de la classe sur laquelle pointe event. Ainsi, vous verrez la liste des fonctions utilisables et certaines renseignent sur les valeurs de 'event'.
De plus, pour changer son était accepté ou rejeté, il y a des fonction : accept() et reject().
Oui, c'est sur ce dernier point, LittleWhite que je me penche :ccool:
Ajouter dans les méthodes des boutons l'accepted();
D'ailleurs, si je regarde bien la doc à ce sujet : Pour info, la Doc Qt5 au sujet de QDialog
Signals
Si j'en déduit, un QDialog::accepted(); dans les boutons devrais fonctionné ainsi, mon dialogstart.cpp deviendrais en théorie :Code:
1
2
3
4 void accepted() void finished(int result) void rejected()
J'ai pas fait l'essai des fois que je soit parti dans la mauvaise direction. ;)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 //Si bouton joueur void DialogStart::on_pushButton_Joueur_clicked() { FLAG_F = DS_FLAG_PJ; //Assigne au flag la valeur DS_FLAG_PJ DialogStart::accepted(); //Si tuation déclaré comme accepted au niveau signal de la QDialog close(); //Ferme la fenêtre et poursui l'exécution du programme //Ferme la fenetre avec comme resultat QDialog::Accepted } //Si bouton Mj void DialogStart::on_pushButton_Mj_clicked() { FLAG_F = DS_FLAG_MJ; //Assigne au flag la valeur DS_FLAG_MJ DialogStart::accepted(); //Si tuation déclaré comme accepted au niveau signal de la QDialog close(); //Ferme la fenêtre et poursui l'exécution du programme //Ferme la fenetre avec comme resultat QDialog::Accepted }
Edit:
En fait, j'ai testé, sans succès ! :oops:
En fait, j'ai rien dit ! Ca fonctionne parfaitement avec:
dialogstart.cpp :
Il fallait remplacer close(); par accept();Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 //Si bouton joueur void DialogStart::on_pushButton_Joueur_clicked() { FLAG_F = DS_FLAG_PJ; //Assigne au flag la valeur DS_FLAG_PJ accept(); //Ferme la fenêtre et poursui l'exécution du programme //Ferme la fenetre avec comme resultat QDialog::Accepted } //Si bouton Mj void DialogStart::on_pushButton_Mj_clicked() { FLAG_F = DS_FLAG_MJ; //Assigne au flag la valeur DS_FLAG_MJ accept(); //Ferme la fenêtre et poursui l'exécution du programme //Ferme la fenetre avec comme resultat QDialog::Accepted }
Problème résolu.
Je travaille désormais à la gestion de mes tab_MJ et pab_PJ dans un tabWidget de ma mainwindow à partir de l'enum. Soit griser l'un, soit griser l'autre.
Je cherche la bonne piste. :ccool:
Bonjour,
Je reviens un peu, cette après-midi sur mon projet !
Alors voila, après avoir résolu le souci de fermeture de la popup, c'est dire, j'avais entrepris de travailler enfin sur ma mainwindow. Et là, j'ai fait des découvertes. Initialement, je pensait, à tort, que les onglets d'un QTabWidget était fixe. Et il n'en est rien ! On peut faire bouger ces onglets dans n'importe quel ordre. J'y reviendrais. Ensuite, dans la popup, enfin QDialog, on gérais un enum. Enum que j'on va réutiliser dans la suite du programme. Et c'est là que les choses ne vont plus !
J'ai donc entrepris de découper ce que fait le programme et un début de piste pour sa résolution. Je tiens à prévenir quand même que je vais faire un pseudo code et que je ne vais pas me basé sur le code réel. Cela nous simplifiera la compréhension du projet.
Bon, il est important de constater que je parle de passage en paramètre. Ceci dans le but d'éviter que l'on ai recours à une variable globale. Non, ça c'est pas la bonne pratique le coup des variables globales. Je m'interdit ici le pointeur sachant qu'il semble possible de passer en paramètre. Charge à mainwindow.h et mainwindow.cpp de gérer la protection de la donnée reçu.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 /* Démarrage de l'application */ //main.cpp commence par ouvrir une QDialog nommé dialogstart.h et dialogstart.cpp //Une fois dans la QDialog, on propose deux choix //Bouton 1 : interface PJ (joueur) -> enum DS_FLAG_PJ si cliqué //Bouton 2 : interface MJ (master) -> enum DS_FLAG_MJ si cliqué //Si croix : quitter -> quit(); (OK ça fonctionne) //Quel que soit le bouton de la QDialog, on ferme la fenêtre //Retour à main.cpp (cas bouton 1 et 2 seulement) /* C'est ici que je voudrais faire quelque-chose */ //Depuis l'énum, charger un paramètre qui sera transmis à mainwindow.h et mainwindow.cpp contenant le résultat de l'enum au travers de fenStart.getStartFlag() //Lancer la mainwindow.h et mainwindow.cpp -> passer en paramètre le contenu de fenStart.getStartFlag(). //Fin de main
Dernier point, car je ne suis pas assez calé pour modifier ça correctement, comment je peux faire passer en paramètre une enum entre main.cpp et mainwindow.h et mainwindow.cpp ?
Merci pour votre aide.
Bonjour,
Quelques interrogations concernant mes classes et la séparations entre data et widget.
Prenons un cas concret de la civilité. On considère la classe dataCivility comme correct avec setName QString, setAge int et setTaille int. En retour, j'ai trois guetter tel que name, age et taille.
Dans mon main j'instancie dataCivility. Je lui transmet des données. En retour, je dois faire une sorte de créer un widget qui soit édita le tel que:
Groupe of : civilité
Label Nom champ name
Label âge champ age
Label taille champ taille
Je cherche à réaliser au mieux ce widget. Ensuite je verrais comment ça s'affiche et comment les données vont s'articuler autour des flux.
Dans le designer tu crées ton propre widet héritant de QWidget, tu choisis une mise en forme de type QFormularLayout, tu flanques tes trois QLabel et tes trois QLineEdit et c'est fini. 8-)