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 :

[mandriva 2008 spring,eclipse] Une fenêtre ne s'affiche pas


Sujet :

Qt

  1. #1
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut [mandriva 2008 spring,eclipse] Une fenêtre ne s'affiche pas
    Bonjour,

    j'ai créé un petit programme qui demande de trouver le résultat de 10 multiplications (de nombres compris entre 1 et 10), ce programme n'est pas encore terminé mais j'ai un bug: la fenêtre principale doit appeler 10 fenêtres secondaires (une pour chaque multiplication) mais les fenêtres secondaires ne s'affichent pas;

    voici les fichiers du prog:

    main.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
    #include <QtGui>
    #include <QApplication>
    #include "multi.h"
     
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        multi w;
        w.show();
        return a.exec();
    }
    (pour main.cpp, RAS)

    multi.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
     
     
    #ifndef MULTI_H
    #define MULTI_H
     
    #include <QWidget>
    #include "ui_multi.h"
     
    class multi : public QWidget, public Ui::multi
    {
        Q_OBJECT
     
    public:
        multi(QWidget *parent = 0);
        ~multi();
     
    private:
    	int num_question;
    	int score;
     
     
    private slots:
    	void serie();
     
     
    };
     
    #endif // MULTI_H
    le slot serie est appelé quand on lance une nouvelle série de 10 questions, c'est lui qui ouvre les 10 fenêtres à la suite.

    multi.cpp
    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
     
    #include <QtGui>
    #include <QMessageBox>
    #include <string>
    #include "multi.h"
    #include "une_question/une_question.h"
     
    multi::multi(QWidget *parent)
        : QWidget(parent)
    {
    	setupUi(this);
    	num_question=1;
    	score=1;
     
     
     
    }
     
    multi::~multi()
    {
     
    }
     
    void multi::serie(){
    	QMessageBox::information(this,"titre","tout va bien",QMessageBox::Yes);
     
     
    	/*lbl_res->setText("hello");
    	lbl_derRes->setVisible(false);
    	lbl_res->setVisible(false);
    	this->adjustSize();
    	score=0;*/
     
    	une_question* la_question_1=new une_question(this,1);
    	la_question_1->show();
    	la_question_1->activateWindow();
     
    	/*
    	for (int i = 0; i < 10; ++i){
    		bool res_i;
    		une_question* la_question=new une_question(i,0);
    		la_question->show();
    		while (!(la_question->fini)){
     
    		}
    		for (int j=1; j<1000000000;j++){
     
    		}
     
     
     
    		res_i=la_question->reussi;
    		if (res_i)
    			score++;
    		//la_question->delete();
    	}*/
     
    //	lbl_res->setVisible(true);
    //
    //	lbl_res->setText((QString)(score)+ "/10");
    //	lbl_derRes->setVisible(true);
    	QMessageBox::information(this,"titre","tout va bien",QMessageBox::Yes);
     
    }
    ne pas s'occuper des lignes en commentaires, ce ne sont que des tests.

    une_question.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
     
     
    #ifndef UNE_QUESTION_H
    #define UNE_QUESTION_H
     
    #include <QtGui/QWidget>
    #include "../ui_une_question.h"
     
    class une_question : public QWidget, public Ui::une_question
    {
        Q_OBJECT
     
    public:
        une_question(QWidget *parent=0,int numero=0);
        ~une_question();
        bool reussi;
        bool fini;
     
    private slots:
    	void test_juste();
     
     
    };
     
    #endif // UNE_QUESTION_H

    une_question.cpp
    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
     
    #include <stdlib.h>
    #include "une_question.h"
     
     
    une_question::une_question(QWidget *parent,int numero)
        : QWidget(parent)
    {
     
    	fini=false;
    	setupUi(this);
    	lbl_num_qst->setText(QString(numero));
    	//int RAND_MAX=10;
    	int le_nb_1=1+(int) (10.0*rand()/(10+1.0));
    	int le_nb_2=1+(int) (10.0*rand()/(10+1.0));
    	QString les_nb=(QString)le_nb_1;
    	les_nb+=  " * " + le_nb_2;
    	lbl_nombres->setText(les_nb);
     
    	reussi=true;
     
    }
     
    une_question::~une_question()
    {
     
    }
     
    void une_question::test_juste(){
    	fini=true;
     
     
    }

    lolveley.

  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
    Salut
    Essaye de mettre le parent de question à 0 pour commencer

  3. #3
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    j'ai fait comme indiqué, mais le comportement ne change pas: la première boîte de dialogue s'affiche, puis le programme se ferme, et la seconde boîte ne s'affiche donc pas.

    lolveley.

  4. #4
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    j'ai trouvé ce qui clochait: c'était la génération de nombres aléatoires.
    premièrement, l'inclusion dans une_question.cpp était mauvaise : il fallait #include <cstdlib>.
    deuxièmement, j'ai simplifié la génération du nombre aléatoire:
    srand(time(NULL));
    int le_nb_1=rand()%11;

    et ça marche.

    lolveley.

  5. #5
    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 olivier57b Voir le message
    j'ai trouvé ce qui clochait: c'était la génération de nombres aléatoires.
    premièrement, l'inclusion dans une_question.cpp était mauvaise : il fallait #include <cstdlib>.
    deuxièmement, j'ai simplifié la génération du nombre aléatoire:
    srand(time(NULL));
    int le_nb_1=rand()%11;

    et ça marche.

    lolveley.

    ok... mais je ne voie pas comment ceci résoud ton problème...

  6. #6
    Membre actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2006
    Messages
    958
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 958
    Points : 213
    Points
    213
    Par défaut
    eh bien, la fenêtre s'affiche.

    lolveley.

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

Discussions similaires

  1. Mandriva Linux Spring RC2 : une meilleure qualité ?
    Par troumad dans le forum Mandriva / Mageia
    Réponses: 8
    Dernier message: 05/07/2010, 19h31
  2. une fentre qui s'affiche et qui se ferme
    Par elmcherqui dans le forum Qt
    Réponses: 1
    Dernier message: 01/07/2008, 09h14
  3. Savoir si une fenêtre est modale ou pas
    Par manu_b dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/06/2008, 16h32
  4. Savoir si une fenêtre est ouverte ou pas
    Par zizoux5 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2007, 19h26
  5. [C# 2.0] Composants d'une fenêtre qui s'affiche un à un
    Par margagn dans le forum Windows Forms
    Réponses: 12
    Dernier message: 13/12/2006, 20h57

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