begin process at 2010 02 10 13:21:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Linux

 > 

GUI

 > 

Une deuxième QDialog?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Une deuxième QDialog?

mardi 12 août 2008 à 15:33:12 | Une deuxième QDialog?

devil2407


Salut à tous!
Je viens ici parce que je suis désespéré! J'ai passé la matinée à chercher comme ouvrir une deuxieme QDialog avec Qt.
En gros, j'ai une fenêtre principale qui appelle une QDialog dans laquelle j'ai la liste des règles de mon moteur d'inférence et je voudrais que sur clic du bouton "Ajouter" il m'ouvre une fenêtre contenant les champs "Regle" et "Fait" mais apparemment en déclarant celle-ci en QDialog, elle ne s'ouvre pas.

Deux QDialogs ne pourraient doc pas s'ouvrir en cascade?? Vous avez une idée?

Merci beaucoup!!

Dams

mardi 12 août 2008 à 16:50:40 | Re : Une deuxième QDialog?

buno

Hello,
Je ne vois pas ce qui bloque: bien sûr que tu peux faire des dialogs en cascade...
Dans la fonction de ton bouton, tu fais un taDialog.show() (ou .exec()). Il faut, bien sûr, que ta dialog soit créée...

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 12 août 2008 à 17:53:09 | Re : Une deuxième QDialog?

devil2407


Merci pour ta réponse rapide Buno mais ca ne compile pas...voila ce que j'ai exactement comme code ca t'aidera peut etre :

FenetreRegles.cpp (hérite déjà d'un widget)

FenetreRegles::FenetreRegles(QWidget *parent = 0) : QDialog(parent)
{
PB_Ajouter = new QPushButton("Ajouter",this);
    PB_Ajouter->setToolTip("Ajouter une nouvelle règle") ;
    PB_Ajouter->setCursor(Qt::PointingHandCursor);
    PB_Ajouter->setIcon(QIcon("plus.png"));
    QObject::connect(PB_Ajouter, SIGNAL(clicked()), this, SLOT(OuvrirFenetreAj()));
}

void FenetreRegles::OuvrirFenetreAj()
{
     FenetreAjMod *Ajout = new FenetreAjMod(this);
     Ajout.exec();
}

FenetreRegles.h
class FenetreRegles : public QDialog // On hérite de QWidget (IMPORTANT)
{
    public:
            FenetreRegles(QWidget *parent);

    public slots:
            void OuvrirFenetreAj() ;
}

FenetreAjMod.cpp
FenetreAjMod::FenetreAjMod(QDialog *parent = 0) : QDialog(parent)
{
...
}

void FenetreAjMod::ouvrirDialogue()
{
...
}

FenetreAjMod.h
class FenetreAjMod : public QDialog // On hérite de QWidget (IMPORTANT)
{
    public:
            FenetreAjMod(QDialog *parent);
}

J'ai vérifié dans chaque unité j'ai bien les bons #include... donc je ne vois pas pourquoi ca ne s'ouvre pas tel quel!!
:'(

mardi 12 août 2008 à 18:11:14 | Re : Une deuxième QDialog?

buno

ça ne compile pas dis-tu?
Je vois 2 choses:
- as-tu implémenté ton constructeur? Genre: FenetreAjMod(QDialog * parent){};
- Ajout->exec() et non "."

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mardi 12 août 2008 à 18:19:41 | Re : Une deuxième QDialog?

devil2407


Ben en fait dans ma premiere QDialog j'ai une fonction que j'appelle sur clic de bouton :

#include "FenetreAjMod.h"
void FenetreRegles::OuvrirFenetreAj()
{
     FenetreAjMod *Ajout = new FenetreAjMod(this);
     Ajout->exec();
}

et dans FenetreAjMod.h j'ai :

class FenetreAjMod : public QDialog 
{
    public:
            FenetreAjMod(QDialog *parent);
}

Pour le ->, si je le remplace par un ".", il me met une erreur de compilation.
Par contre je ne sais pas si j'ai fait la bonne déclaration pour ma deuxième QDialog... est-ce bien cela qu'il faut mettre si elle hérite d'une première QDialog?

Pour le .cpp :
FenetreAjMod::FenetreAjMod(QDialog *parent = 0) : QDialog(parent)

Pour le .h
class FenetreAjMod : public QDialog
{
    public:
            FenetreAjMod(QDialog *parent);
}

Dams
mardi 12 août 2008 à 18:21:03 | Re : Une deuxième QDialog?

devil2407

Ca compile comme je l'ai codé. Mais lorsque je clique sur le bouton "Ajouter", rien ne s'affiche...pas même ma deuxième QDialog :'(

mercredi 13 août 2008 à 09:31:48 | Re : Une deuxième QDialog?

buno

Hello,
Alors moi, j'ai déclaré ceci dans mon .h

class FenetreAjMod : public QDialog
{
    public:
            FenetreAjMod(QDialog *parent=NULL):QDialog(parent){};
}

Avec l'appel dans le cpp:

void testQT::onClick(bool)
{
    FenetreAjMod * myDialog = new FenetreAjMod();
    myDialog->exec();
}

Sachant que dans ma fenêtre principal (testQT) j'ai un PushButton qui s'appelle "ok" et que, dans le contructeur de ma fenêtre principale, j'ai connecté l'appui sur le bouton à ma fonction d'affichage de ma 2e dialog:
QObject::connect(ok,SIGNAL(clicked(bool)),this,SLOT(onClick(bool)));

Et j'ai bien ma 2e dialog qui d'affiche au 1er plan quand j'appuie sur le bouton.

Est-ce que tu es sûr que tu passes dans la fonction quand tu clic qur ton bouton?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 14 août 2008 à 09:47:34 | Re : Une deuxième QDialog?

devil2407


Effectivement, j'a placé un QMessageBox dans la fonction qui est censée m'ouvrir ma QDialog et même mon QMessageBox ne s'affiche pas donc le programme ne rentre pas dans ma fonction... pourquoi? ca c'est encore autre chose... l'appel me semble correct pourtant...

QObject::connect(PB_Ajouter, SIGNAL(clicked()), this, SLOT(OuvrirFenetreAj()));
jeudi 14 août 2008 à 10:08:31 | Re : Une deuxième QDialog?

buno

Petit souci: le prototype du signal "clicked" veut un booléen en paramètre. Donc il faut corriger ta ligne comme ceci:
QObject::connect(PB_Ajouter, SIGNAL(clicked(bool)), this, SLOT(OuvrirFenetreAj(bool)));

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
jeudi 14 août 2008 à 11:46:48 | Re : Une deuxième QDialog?

devil2407

Réponse acceptée !

C'est bon pour la deuxième QDialog Buno... je viens de m'apercevoir que j'avais oublié dans le FenetreAjMod.h la ligne Q_OBJECT....

Tout ce temps perdu à cause de ça!!
En tout cas merci beaucoup pour ton aide!

Devil

1 2

Cette discussion est classée dans : ouvrir, ouvre, fenêtre, qdialog


Répondre à ce message

Sujets en rapport avec ce message

plusieurs fenêtre win32 [ par maevasa ] bonjour,Voilà j'ai un programme qui ouvre sur un menu . Ce menu permet d'ouvrir plusieurs fenêtres mais lorque une est ouverte je ne peux pas cliquer Ouvrir une sous-fenêtre depuis un bouton [Dev-cpp] [ par by_rabbit_08 ] bonour! J'ai posté une question sur le forum l'autre, mais a voir, elle n'a pas été bien compris ... Enfait, j'imagine que pour beaucoup de monde, c'e ouvrir plusieurs fichiers txt l'un apres l'autre [ par drcmomo ] Bonjour tout le monde!!Je cherche a ouvrir plusieurs fichiers txt :exemple j'ouvre le premier j'extraires des données , j'ouvre le deuxieme j'extraire ouvrir plusieurs fichiers txt l'un apres l'autre [ par drcmomo ] Bonjour tout le monde!!Je cherche a ouvrir plusieurs fichiers txt :exemple j'ouvre le premier j'extraires des données , j'ouvre le deuxieme j'extraire createprocess [ par JCShaolan ] Bonjour tout le monde, je développe actuellement une application (jeu d'échec) avec une librairie qui s'appelle SDL. Et en fait, lorsqu'une pièce arri Ouvrir un fenêtre internet [ par Arnauti ] Bonjour, voilà, je suis débutant en C est j'aimerais savoir comment faire pour ouvrir une fenêtre internet depuis un programme MSDos.J'utilises DevCpp Évènements du clavier [ par mast ] Bonsoir,J'essais d'écrire une petite appli qui détecte les évènements du clavier pour ouvrir des applications. Par exemple F2 ouvrirait firefox, F3 th Qt [ par Topnotch ] BonjourJ'aimerais savoir comment créer une application avec Qt qui ouvre une deuxième fenêtre. Par exemple, lorsque je clique sur le bouton Ok de la f Ouvrir une fenetre depuis un bouton place sur une autre fenetre [ par LucyUnDemi ] Bonjour à tous.Je ne sais pas si la question a déjà été posée mais étant donné que je ne trouve pas de solution où que se soit sur ce forum ou ailleur Ouvrir une dialog box au démarrage [ par genetin ] Bonjour,Je voudrais qu'au démarrage de mon application, la fenêtre principale soit affichée, de même qu'une dialog box (qui serait active).J'ai essayé


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales