lola0608
Messages postés21Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention 1 juillet 2009
-
22 août 2008 à 02:26
lola0608
Messages postés21Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention 1 juillet 2009
-
24 août 2008 à 22:52
salut tout le monde je debute avec Qt, mais je suis bloquée depuis un bout de temps , je sais pas comment faire pour passer d'une fenêtre à une autre, j'ai essayer des trucs mais j'ai pas trouvé la solution.
en fait j'ai fait 2 classes : principale et secondaire.j'ai mis un bouton dans la principale pour que
quand on appui dessus on passe à la seconde, j'ai fait le connect(bouton, SIGNAL(clicked()), this, SLOT(ouvrirsecondaire()));
dans le constructeur de la fenêtre principale.
et voila le slot que j'ai crée
void FenPrincipale::ouvrirsecondaire()
{
FenSecondaire *fenetresecon = new FenSecondaire(this);
fenetresecon->exec();
}
et là il m'affiche l'erreur : "no matching functionfor call to 'FenSecondaire::FenSecondaire(FenPrincipale* const)"
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 août 2008 à 11:05
Bienvenue !
Cela ne sert à rien de poster la même question dans deux sections différentes. Pour info, le coup du "up" en repostant dans le même thread ne fonctionne pas non plus sur ce forum.
Le titre de ton topic n'est pas du tout explicite : un titre précisant ton problème, c'est beaucoup mieux et plus efficace (Et ça respècte le règlement ).
Cela dit félicitation pour ton français et merci de la politesse.
Je n'ai fait que quelques heures de QT et c'était une mauvaise experience...
Dans le cas présent, tu as une erreur C++ : le compilo ne trouve pas de constructeur pour la classe FenSecondaire prenant un pointeur sur une FenPrincipal.
Il lui manque quelque chose comme cela en somme :
<hr />
Class FenSecondaire : public ClasseParenteDeSecondaire
{
public :
FenSecondaire(const ClasseParenteDeFenPrincipale* parente)
{
}
}
<hr />
Cela dit c'est curieux que la classe ClasseDesFenêtresQT ne propose pas ce constructeur...
Attention, à vu de nez, il y a pas mal de classes pour une fenêtre QT : QMainWindow, QDilaog, QWidget...
lola0608
Messages postés21Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention 1 juillet 2009 22 août 2008 à 16:09
salut, je vous remercie pour votre aide, maintenant j'ai une autre erreur qui s'affiche
c'est l'erreur: "new types may not be defined in a return type.return type specification for constructor invalid"
voila le .cpp , l'errer est affichée à la ligne 8:
qu'est ce que je dois faire
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 août 2008 à 18:03
Tu as dû oublier le ; (Comme moi ) à la fin de la déclaration de la classe dans un .h (Celui du FenFournisseurs.h je suppose).
C'est super chiant qu'il le faille en C++ et pas en Java.
lola0608
Messages postés21Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention 1 juillet 2009 23 août 2008 à 23:37
voilà un nouveau problème, à la compilation tout est réglo mais quand j'exécute la il ne s'affiche que le bouton valider en haut à gauche comme si je n'ai crée que lui et que je n'ai pas effectué de changement sur son emplacement, voilà le .h
#ifndef FENAJOUTF_H_INCLUDED
#define FENAJOUTF_H_INCLUDED
#include <QtGui>
class FenAjoutf : public QWidget
{
public:
FenAjoutf();
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 24 août 2008 à 14:23
[troll]
Le 5ème jour, il inventa QT.
Il vit que tout les développeurs débutants en bavaient à rien faire.
Alors le 6ème jour il inventa la VCL et il vit que c'était bien.
Le 7ème, il était un peu fatigué, alors il a abandonné le support Linux de la VCL.
/troll
Si tu ne précises pas que tes composants doivent être affichés dans ton Widget, ils n'ont aucune raison d'y être.
Pour le bouton, tu précise le parent dans le constructeur :
valider = new QPushButton("&valider", this );
Tu devrais faire pareil pour le reste (Ou utiliser setLayout, addWidget... quand c'est possible).
Par exemple là :
groupDefinition->setLayout(defLayout);
Tu met le Layout que tu affectes le Layout créé un peu plus haut dans la QGroupBox.
Mais qui est le parent (Au sens graphique) de QGroupBox ?
Personne.
Si tu construit ton QGroupBox comme ça :
QGroupBox *groupDefinition = new QGroupBox("Ajout d'un fournisseur", this);
lola0608
Messages postés21Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention 1 juillet 2009 24 août 2008 à 22:02
salut tout le monde, voila mon problème c'est que à la compilation il y a aucune erreur mais à l'affichage toujours un problème, cette fenêtre se ferme mais la fenêtre sensée s'ouvrir ne s'ouvre pas :voila le .h:
J'extrapole le hide().
Supposition (sur une extrapolation basée sur mon imagination...) : si on cache une parente, les filles se planquent aussi.
fenetresecon est fille de this, tu caches this, donc tu cache aussi fenetresecon.
Si j'ai raison, il faut enlever le this dans new FenSecondaire(this);.
lola0608
Messages postés21Date d'inscriptionjeudi 3 juillet 2008StatutMembreDernière intervention 1 juillet 2009 24 août 2008 à 22:29
sachant que ce code de la fenêtre clients est un copier coller d'une autre fenêtre fournisseurs qui a bien marché, voila le .cpp de la fenêtre d'avant :
#include "FenClients.h"
#include "FenAjoutc.h"
#include "FenModifc.h"
#include "FenSuppc.h"
ajout = new QPushButton ("Ajouter ", this);
modif = new QPushButton ("Modifier ", this);
supp = new QPushButton ("Supprimer ", this);
QVBoxLayout *definitionLayout = new QVBoxLayout;
definitionLayout->addWidget(ajout);
definitionLayout->addWidget(modif);
definitionLayout->addWidget(supp);
QGroupBox *groupBox = new QGroupBox("Menu de la gestion des clients ", this);
groupBox->setLayout(definitionLayout);
groupBox->setGeometry(30, 20, 240, 200);