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 :

Lancement d'une fonction.


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut Lancement d'une fonction.
    Bonsoir à tous,

    J'ai un petit problème. En effet, j'aimerais qu'à la fermeture d'une fenetre, ma fenêtre principale affiche quelque chose. Pour cela, (comme vous le verrez sur le code) je passe par la modification d'un bête booléen qui est déclaré dans ma classe comme attribut. Je fais la transformation de ce dernier dans un slot qui est appelé si on appuie sur le bouton correspondant. Mais, j'ai l'impression qu'il n'est pas modifié.

    Voila le code :

    Mon .h
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    #ifndef DEF_FENACCUEIL
    #define DEF_FENACCUEIL
     
    #include <iostream>
    #include <QApplication>
    #include <QGraphicsView>
    #include <QGraphicsScene>
    #include <QGraphicsItem>
     
    #include <QColor>
    #include <QPainter>
    #include <QStyleOption>
    #include <QKeyEvent>
    #include <QImage>
    #include <math.h>
     
    #include <time.h>
     
    #include <QMainWindow>
    //#include <QMdiArea>
    #include <QMenuBar>
    #include <QAction>
    #include <QBrush>
     
    #include <QDialog>
    #include <QWidget>
    #include <QLabel>
    #include <QPushButton>
    #include <QVBoxLayout>
    #include <QProgressBar>
    #include <QGroupBox>
    #include <QFrame>
    #include <QSpinBox>
    #include <QFormLayout>
     
    #include "Terrain.h"
     
     
    class FenetreAccueil : public QMainWindow
    {
    	Q_OBJECT
    	private:
    		QGraphicsView *v;/* vue */
    		Terrain *s;/* scene */
    		QWidget * principale;
    		QProgressBar *barre;
    		QDialog * fenetreprog;
     
    		QDialog * Choix_jeux;
     
    		QAction *actionNouveauJeu;
     
    		bool ferme;
     
    	public:
    		FenetreAccueil();
    		void barreProgression();
    		bool fenChoixJeux();
     
    	public slots:
    		void NouveauJeu();
    		void PageCommande();
    		void Accueil();
    		void Aide();
    		void ChangeValue(int);
    		void FermeFenetre();
     
    };
     
     
     
    #endif
    Et mon .cpp. Pour plus de clarté je ne vous ai pas tout mis, car le fichier est assez gros. Je ne vous met que les fonctions qui bloquent.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
     
    	/* slot pour le bouton Nouveau Jeu*/
    void FenetreAccueil :: NouveauJeu()
    {
    	QVBoxLayout *layout = new QVBoxLayout;
    	actionNouveauJeu->setEnabled(false);
    	if(fenChoixJeux())
    	{
    		barreProgression();
    		jeu(v,s);
     
    		layout->addWidget(v);
    		principale->setLayout(layout);
    	}
     
    }
     
    void FenetreAccueil :: barreProgression()
    {
    	fenetreprog = new QDialog();
    	QGroupBox *groupbox = new QGroupBox(fenetreprog);
     
    	QVBoxLayout *group_layout = new QVBoxLayout(groupbox);
    	barre = new QProgressBar(groupbox);
    	int valeur = 0;
     
    	fenetreprog->setWindowTitle("Fenetre de chargement");
    	fenetreprog->setGeometry(405,200,300,90);
     
    	groupbox->setFixedSize(300,90);
    	groupbox->setTitle("Chargement");
    	groupbox->setFlat(1);
     
    	barre->setMaximum(100);
    	barre->setMinimum(0);
    	barre->setOrientation(Qt::Horizontal);
    	barre->setFixedSize(280, 20);
     
    	connect(barre, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
     
    	group_layout->addWidget(barre);
    	groupbox->setLayout(group_layout);
     
    	fenetreprog->show();
     
    	connect(barre, SIGNAL(valueChanged(int)), this, SLOT(ChangeValue(int)));	
     
    	for(valeur = 0; valeur <= 101; valeur ++)
    	{
    		barre->setValue(valeur);
    	}
    	v->activateWindow();
    	v->setFocusPolicy(Qt::StrongFocus);
    	v->setFocus();
    }
     
    bool FenetreAccueil :: fenChoixJeux()
    {
    	Choix_jeux = new QDialog();
    	QFrame *frame = new QFrame(Choix_jeux);
    	QGroupBox *group_box_multi = new QGroupBox(Choix_jeux);
    	QGroupBox *group_box_solo = new QGroupBox(Choix_jeux);
    	QFormLayout * layout_solo = new QFormLayout();
    	QFormLayout * layout_multi = new QFormLayout();
    	QSpinBox * liste_joueur = new QSpinBox();
    	QSpinBox * liste_tank_solo = new QSpinBox();
    	QSpinBox * liste_tank_multi = new QSpinBox();
    	QSpinBox * liste_obstacles_solo = new QSpinBox();
    	QSpinBox * liste_obstacles_multi = new QSpinBox();
    	QLabel * label_liste_joueur = new QLabel();
    	QLabel * label_liste_tank_solo = new QLabel();
    	QLabel * label_liste_tank_multi = new QLabel();
    	QLabel * label_liste_obstacles_solo = new QLabel();
    	QLabel * label_liste_obstacles_multi = new QLabel();
    	QPushButton * bouton_Go = new QPushButton("Go!!!",Choix_jeux);
    	QPushButton * bouton_Annuler = new QPushButton("Annuler", Choix_jeux);
    	ferme = false;
     
    	Choix_jeux->move(270, 120);
    	Choix_jeux->setFixedSize(400, 300);
    	Choix_jeux->setWindowTitle("Faites votre jeu !");
    	Choix_jeux->setWindowIcon(QIcon(".//Images//Icone_principal.jpg"));
    	Choix_jeux->setModal(true);
     
    	frame->setFrameShape(QFrame :: StyledPanel);
    	frame->setGeometry(20,20, 360, 260);
    	frame->setFrameShadow(QFrame :: Plain);
    	frame->setLineWidth(2);
    	frame->setMidLineWidth(1);
     
    	group_box_solo->setGeometry(30, 50, 167, 180);
    	group_box_solo->setCheckable(true);
    	group_box_solo->setTitle("Mode un joueur");
     
    	liste_tank_solo->setRange(1, 8);
    	liste_obstacles_solo->setRange(0,25);
     
    	label_liste_tank_solo->setText("Nombre de tanks au départ :");
    	label_liste_obstacles_solo->setText("Nombre d'obstacles au départ");
     
    	group_box_multi->setGeometry(203,50, 167, 180);
    	group_box_multi->setCheckable(true);
    	group_box_multi->setTitle("Mode multijoueur");
     
    	liste_joueur->setRange(2, 8);
    	liste_tank_multi->setRange(1, 8);
    	liste_obstacles_multi->setRange(0, 20);
     
    	label_liste_joueur->setText("Choississez le nombre de particpants");
    	label_liste_tank_multi->setText("Nombre de tanks au départ :");
    	label_liste_obstacles_multi->setText("Nombre d'obstacles au départ");
     
    	layout_solo->addRow(label_liste_tank_solo);
    	layout_solo->addRow(liste_tank_solo);
     
    	layout_solo->addRow(label_liste_obstacles_solo);
    	layout_solo->addRow(liste_obstacles_solo);
     
    	layout_multi->addRow(label_liste_joueur);
    	layout_multi->addRow(liste_joueur);
     
    	layout_multi->addRow(label_liste_tank_multi);
    	layout_multi->addRow(liste_tank_multi);
     
    	layout_multi->addRow(label_liste_obstacles_multi);
    	layout_multi->addRow(liste_obstacles_multi);
     
    	group_box_solo->setLayout(layout_solo);
    	group_box_multi->setLayout(layout_multi);
     
    	bouton_Go->move(105,250);
    	bouton_Annuler->move(220,250);
     
    	Choix_jeux->show();
     
    	connect(bouton_Go, SIGNAL(clicked()),this,SLOT(FermeFenetre()));
    	connect(bouton_Annuler, SIGNAL(clicked()), Choix_jeux, SLOT(close()));
     
    	return true;
     
    }
     
    void FenetreAccueil :: FermeFenetre()
    {
    	Choix_jeux->close();
    	//ferme = true;
    }
    Donc si l'un d'entre vous a un idée ou même une meilleure manière de faire : Je suis preneur.
    Par ailleurs, j'espère ne pas me tromper si je dis que les entiers ou booléens déclarés dans la classe peut être modifier partout dans les fonctions de cette classe et que ce n'est pas ça l'erreur.
    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Bonjour,
    Citation Envoyé par razonback Voir le message
    j'aimerais qu'à la fermeture d'une fenetre, ma fenêtre principale affiche quelque chose. Pour cela, (comme vous le verrez sur le code) je passe par la modification d'un bête booléen qui est déclaré dans ma classe comme attribut. Je fais la transformation de ce dernier dans un slot qui est appelé si on appuie sur le bouton correspondant. Mais, j'ai l'impression qu'il n'est pas modifié.
    Ne serait-ce pas plus simple d'utiliser des signaux ? Surtout si tes fenêtre sont des QDialog, il y a déjà tout ce qu'il faut...

    Par ailleurs, j'espère ne pas me tromper si je dis que les entiers ou booléens déclarés dans la classe peut être modifier partout dans les fonctions de cette classe
    Oui c'est le principe de la programmation objet...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    J'utilise déjà des signaux ou alors je n'est pas compris ce que tu veux dire...

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Mmm...
    Pourrais-tu préciser ce que tu veux faire exactement, et à quoi sert ton booléen ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    En fait mon booléen ne me sert qu'a entrer dans une autre fonction.
    Si tu regarde mon code, c'est dans la fonction nouveau jeu.
    Je le modifie pour afficher ce que je veux. Le problème est que je pense que soit le booléen n'est pas modifier dans le slot soit que le if n'est plus traité.

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Bon je pense que dans ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void FenetreAccueil :: FermeFenetre()
    {
    	Choix_jeux->close();
    	//ferme = true;
    }
    tu voulais mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void FenetreAccueil :: FermeFenetre()
    {
    	Choix_jeux->close();
    	ferme = true;
    }
    sinon comme ça je ne vois pas...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    oui mais comme je voulais continuer le projet je l'ai mis en commentaires.
    Ceci étant dis ce n'est pas ça le problème

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    Bon oubliez le problème précédent je l'ai résolu mais cela m'en a créer un autre...

    Voila comme vous pouvez le constatez dans ma fonction fenChoixjeux() je génère des SPinbox, et autre widgets. Voila mon probleme. La fonction NouveauJeu se lance et donc je vais dans la fonction fenChoixjeux();
    ce que j'aimerais que ça fasse c'est que la fonction barre_progression attende les valeurs envoyées par les Spinbox avant de se lancer.
    Car malhereusement là la fonction attend bien que j'appuie sur le bouton Go!!! mais aucune valeur n'est modifié.
    Moi ce que je voudrais c'est que le programme attende que les l'utilisateurs appuie sur Go!! avant de changer les valeurs...
    Et je ne vois pas comment faire...
    Je vous met le nouveau code modifier.
    Le .h n'a pas changer donc je ne le remet pas pour une question de clarté, seul le contenu du SLOT FermeFenetre a changé.

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
     
    	/* slot pour le bouton Nouveau Jeu*/
    void FenetreAccueil :: NouveauJeu()
    {
    	QVBoxLayout *layout = new QVBoxLayout;
     
    	//ferme = 1;
    	if(ferme == 1)
    	{
    		//fenChoixJeux();
    		principale->setCursor(Qt::ForbiddenCursor);
    		actionNouveauJeu->setEnabled(false);
     
    		barreProgression();
    		jeu(v,s);
     
    		layout->addWidget(v);
    		principale->setLayout(layout);
    	}
    	else
    	{
    		fenChoixJeux();
    	}
     
    }
     
     
    void FenetreAccueil :: ChangeValue(int valeur)
    {	
    	if(valeur >= barre->maximum())
    	{
    		fenetreprog->close();
    	}
    }
     
    void FenetreAccueil :: barreProgression()
    {
    	fenetreprog = new QDialog();
    	QGroupBox *groupbox = new QGroupBox(fenetreprog);
     
    	QVBoxLayout *group_layout = new QVBoxLayout(groupbox);
    	barre = new QProgressBar(groupbox);
    	int valeur = 0;
     
    	fenetreprog->setWindowTitle("Fenetre de chargement");
    	fenetreprog->setGeometry(405,200,300,90);
     
    	groupbox->setFixedSize(300,90);
    	groupbox->setTitle("Chargement");
    	groupbox->setFlat(1);
     
    	barre->setMaximum(100);
    	barre->setMinimum(0);
    	barre->setOrientation(Qt::Horizontal);
    	barre->setFixedSize(280, 20);
     
    	connect(barre, SIGNAL(valueChanged(int)), this, SLOT(setValue(int)));
     
    	group_layout->addWidget(barre);
    	groupbox->setLayout(group_layout);
     
    	fenetreprog->show();
     
    	connect(barre, SIGNAL(valueChanged(int)), this, SLOT(ChangeValue(int)));	
     
    	for(valeur = 0; valeur <= 101; valeur ++)
    	{
    		barre->setValue(valeur);
    	}
    	/* Creation des GraphicsView pour le jeu */
    	nombre_joueurs = 3;
    	nombre_tanks = 3;
    	nombre_obstacles =3;
    	v = new QGraphicsView();
        s = new Terrain(nombre_joueurs, nombre_tanks, nombre_obstacles);/* scene */
    	v->activateWindow();
    	v->setFocusPolicy(Qt::StrongFocus);
    	v->setFocus();
    }
     
    int FenetreAccueil :: fenChoixJeux()
    {
    	Choix_jeux = new QDialog();
    	QFrame *frame = new QFrame(Choix_jeux);
    	QGroupBox *group_box_multi = new QGroupBox(Choix_jeux);
    	QGroupBox *group_box_solo = new QGroupBox(Choix_jeux);
    	QFormLayout * layout_solo = new QFormLayout();
    	QFormLayout * layout_multi = new QFormLayout();
    	QSpinBox * liste_joueur = new QSpinBox();
    	QSpinBox * liste_tank_solo = new QSpinBox();
    	QSpinBox * liste_tank_multi = new QSpinBox();
    	QSpinBox * liste_obstacles_solo = new QSpinBox();
    	QSpinBox * liste_obstacles_multi = new QSpinBox();
    	QLabel * label_liste_joueur = new QLabel();
    	QLabel * label_liste_tank_solo = new QLabel();
    	QLabel * label_liste_tank_multi = new QLabel();
    	QLabel * label_liste_obstacles_solo = new QLabel();
    	QLabel * label_liste_obstacles_multi = new QLabel();
    	QPushButton * bouton_Go = new QPushButton("Go!!!",Choix_jeux);
    	QPushButton * bouton_Annuler = new QPushButton("Annuler", Choix_jeux);
     
     
    	Choix_jeux->move(270, 120);
    	Choix_jeux->setFixedSize(400, 350);
    	Choix_jeux->setWindowTitle("Faites votre jeu !");
    	Choix_jeux->setWindowIcon(QIcon(".//Images//Icone_principal.jpg"));
    	Choix_jeux->setModal(true);
     
    	frame->setFrameShape(QFrame :: StyledPanel);
    	frame->setGeometry(20,20, 360, 310);
    	frame->setFrameShadow(QFrame :: Plain);
    	frame->setLineWidth(2);
    	frame->setMidLineWidth(1);
     
    	group_box_solo->setGeometry(30, 50, 167, 230);
    	group_box_solo->setCheckable(true);
    	group_box_solo->setTitle("Mode un joueur");
    	group_box_solo->setChecked(false);
     
    	liste_tank_solo->setRange(1, 8);
    	liste_obstacles_solo->setRange(0,25);
    	liste_obstacles_solo->setValue(10);
     
    	label_liste_tank_solo->setText("<center>Nombre de tanks au départ :</center>");
    	label_liste_obstacles_solo->setText("<center>Nombre d'obstacles au <br />départ :</center>");
     
    	group_box_multi->setGeometry(203,50, 167, 230);
    	group_box_multi->setCheckable(true);
    	group_box_multi->setTitle("Mode multijoueur");
     
    	group_box_multi->setChecked(false);
     
    	liste_joueur->setRange(2, 8);
    	liste_tank_multi->setRange(1, 8);
    	liste_obstacles_multi->setRange(0, 20);
    	liste_obstacles_multi->setValue(10);
     
    	label_liste_joueur->setText("<center>Choississez le nombre de <br />particpants :</center>");
    	label_liste_tank_multi->setText("<center>Nombre de tanks au départ :</center>");
    	label_liste_obstacles_multi->setText("<center>Nombre d'obstacles au <br />départ :</center>");
     
    	layout_solo->addRow(label_liste_tank_solo);
    	layout_solo->addRow(liste_tank_solo);
     
    	layout_solo->addRow(label_liste_obstacles_solo);
    	layout_solo->addRow(liste_obstacles_solo);
     
    	layout_multi->addRow(label_liste_joueur);
    	layout_multi->addRow(liste_joueur);
     
    	layout_multi->addRow(label_liste_tank_multi);
    	layout_multi->addRow(liste_tank_multi);
     
    	layout_multi->addRow(label_liste_obstacles_multi);
    	layout_multi->addRow(liste_obstacles_multi);
     
    	group_box_solo->setLayout(layout_solo);
    	group_box_multi->setLayout(layout_multi);
     
    	bouton_Go->move(105,300);
    	bouton_Annuler->move(220,300);
     
    	Choix_jeux->show();
     
    	if(group_box_multi->isChecked())
    	{
    		group_box_solo->setChecked(false);
     
    		nombre_tanks = liste_tank_multi->value();
    		nombre_obstacles = liste_obstacles_multi->value();
    		nombre_joueurs = liste_joueur->value();
     
    		QWidget * diag = new QWidget();
    		QPushButton * bouton = new QPushButton("Quitter",diag);
    		QLabel *label = new QLabel(diag);
    		QString Texte = "Le joueur = " + QString::number(nombre_joueurs)+ "a gagner";
    		diag->setGeometry( 400,400, 100, 75);
    		label->setText(Texte);
    		bouton->move(40, 50);
    		QObject ::connect(bouton, SIGNAL(clicked()),qApp, SLOT(quit()));
    		diag->show();
    	}
    	else if(group_box_solo->isChecked())
    	{
    		group_box_multi->setChecked(false);
    		nombre_tanks = liste_tank_solo->value();
    		nombre_obstacles = liste_obstacles_solo->value();
    		nombre_joueurs = 1;
    	}
     
    	connect(bouton_Go, SIGNAL(clicked()),this ,SLOT(FermeFenetre()));
     
    	connect(bouton_Annuler, SIGNAL(clicked()), Choix_jeux, SLOT(close()));
     
    	if( ferme == 1 )
    		Choix_jeux->close();
     
    	return ferme;
     
    }
     
    void FenetreAccueil :: FermeFenetre()
    {
    	Choix_jeux->close();
    	ferme = 1;
    	update();
    	NouveauJeu();
    }
    Help please !!!

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Citation Envoyé par razonback Voir le message
    Bon oubliez le problème précédent je l'ai résolu mais cela m'en a créer un autre...
    Si tu le dis...

    ce que j'aimerais que ça fasse c'est que la fonction barre_progression attende les valeurs envoyées par les Spinbox avant de se lancer.
    [...]
    Moi ce que je voudrais c'est que le programme attende que les l'utilisateurs appuie sur Go!! avant de changer les valeurs...
    Mmm... Faudrait savoir ! Tu veux faire quoi exactement ?

    Je me répète : les signaux sont tes amis !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    En fait pour faire simple : je créer ma fenêtre avec les spinbox et le bouton Go!!
    Puis j'ai une fonction barre_progression qui créer une autre fenêtre avec ce que renvoie les spinbox.
    Ce que j'aimerais donc c'est que barre_progression prenne en compte les changements de valeurs des spinbox.
    Je vais essayer avec des signaux car si j'ai compris ce que tu voulais dire, il faut quand même connecté les spinbox a un signal pour que les changements de valeurs soit pris en compte?!

  11. #11
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Citation Envoyé par razonback Voir le message
    je créer ma fenêtre avec les spinbox et le bouton Go!!
    Puis j'ai une fonction barre_progression qui créer une autre fenêtre avec ce que renvoie les spinbox
    Je vais peut-être dire une connerie, mais si ta fonction "barre_progression" est appelée (d'une manière ou d'une autre) quand on clique sur ton bouton "Go", alors il suffit de récupérer les valeurs des spinbox avec la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int QSpinBox::value () const;

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    En fête je pense que c'est ce que je fais mais je ne le fais pas au bonne endroit. Je vais essayer de les changer de place et je vous fait signe merci de m'avoir repondu!

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    Bon merci maintenant tout se déroule correctement mais j'ai encore une petite question esthétique.
    Voila, comme vous pouvez le voir dans mon code j'aimerais que lorsqu'une groupe box est "checkée" l'autre ne le soit plus et vice versa...
    Pour cela je fais ceci ( que ce soit dans mon slot ou ailleurs )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    if(group_box_multi->isChecked())
    	{
    		group_box_solo->setChecked(false);
    		//update();
     
    	}
    	else if(group_box_solo->isChecked())
    	{
     
    		group_box_multi->setChecked(false);
    		//update();
     
    	}
    Le problème est que visuellement ça ne le fait pas instantanément.
    Pour ceux qui ne voient pas ce que je veux faire c'est comme les questionnaires avec plusieurs boutons radio mais qu'une seule réponse possible, quand on clique sur un deuxième bouton le premier se décoche.
    J'aimerais faire la même chose est ce que c'est possible??

  14. #14
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Je pense que tu mélanges les QCheckBox et les QButtonGroup ... non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    /* [...] */
    QButtonGroup* buttonGrp = new QButtonGroup (/*[...] */);
    QCheckBox* checkBox1 = new QCheckBox (/*[...] */);
    QCheckBox* checkBox2 = new QCheckBox (/*[...] */);
    buttonGrp->addButton (checkBox1);
    buttonGrp->addButton (checkBox2);
    buttonGrp->setExclusive (true);

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    Moi je parle de la case à cocher que l'on peut rajouter lors de la création d'un groupBox.

  16. #16
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 507
    Points : 704
    Points
    704
    Par défaut
    Dans ce cas
    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
    bool FenetreAccueil::fenChoixJeux () {
       // [...]
       connect (group_box_multi, SIGNAL(clicked(bool)), SLOT(multi_clicked_slot(bool)));
       connect (group_box_solo, SIGNAL(clicked(bool)), SLOT(solo_clicked_slot(bool)));
       // [...]
    }
     
    // Déclarée en private slot
    void FenetreAccueil::multi_clicked_slot (bool clicked) {
       group_box_solo->setChecked (!clicked);
    }
     
    // Déclarée en private slot
    void FenetreAccueil::solo_clicked_slot (bool clicked) {
       group_box_multi->setChecked (!clicked);
    }

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 77
    Points : 46
    Points
    46
    Par défaut
    Trop bien un grand merci à toi !!!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/04/2007, 12h48
  2. Réponses: 1
    Dernier message: 09/08/2006, 16h04
  3. Réponses: 5
    Dernier message: 18/07/2006, 17h03
  4. Post avec lancement d'une fonction JS
    Par Seth77 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/07/2006, 14h31
  5. Réponses: 12
    Dernier message: 24/04/2006, 23h19

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