Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Une deuxième QDialog? [ Linux / GUI ] (devil2407)

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é 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 deuxième fenêtre Win32 sous Dev-C++ [ par olivier007700 ] Bonjour, Je souhaite ouvrir, depuis une première fenêtre, une deuxième fenêtre tout à fait classique.Quel est le code le plus simple pour ce faire ?Me


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,250 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.