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

Discussion :

[QT] Different Type de fenetre QT (Qwidget, QDialog ..)

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut [QT] Different Type de fenetre QT (Qwidget, QDialog ..)
    Bonjour à tous

    J'ai une petite question sur les fenetre QT

    J'ai ma fenetre principal qui est sous forme de QWidget avec comme option Q_OBJECT pour pouvoir utiliser des private slots

    Le soucis c'est que quand je veux cree une nouvelle fenetre je n'arrive pas a recree un QWidget (tjr dans un constructeur), j'arrive a faire un QDialog mais avec je peut pas utilise Q_OBJECT ni de fonction constructeur pour un bouton Valider (qui vas faire des requête sql ) .

    Donc ma question , quel propriété peut on utiliser pour faire une nouvelle fonction avec la propriétaire Private Slot ou des sous fonction qui peuvent utiliser les variable cree dans le constructeur

    cdlt

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    J'ai une Classe avec ma fonction Primaire dans un Fichier .h

    et j'ai une nouvelle Classe (pour ma nouvelle fenetre) dans un autre fichier .h

    Le nouveau constructeur cree sous forme fonction::Qdialog

    j'ai : Public : fonction();
    Private: Variable ...


    Et si je cree d'autre fonction dans Public ou meme Private Slot , je n'arrive pas à les appeler

    que se soit de façon automatique

    blabla ...
    fonction();
    blabla

    ou dans un slot connect::

    J'ai deux bouton , un qui quitte (qui fonctionne) et le bouton valider qui va exécuter une fonction avec une requete Sql par rapport à des Qlineedit.

  3. #3
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Peux tu copier coller ton .h et .cpp ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    les fichiers de la nouvelle fenetre
    Le .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
    #ifndef HEADER_FENFOURNISSEUR
    #define HEADER_FENFOURNISSEUR
     
    #include <QtGui>
     
    class FenFournisseur: public QDialog
    {
     
     
        public:
            FenFournisseur();
     
     
    	private slots:
     
    		void ValidAjout();
     
     
    	private:
     
    	QLineEdit *Fournisseur;
    	QTextEdit *Adresse;
    	QLineEdit *Contact;
    	QLineEdit *Tel;
    	QLineEdit *Fax;
    	QLineEdit *Mail;
     
    };
     
    #endif

    le .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
    #include <QtGui/QLineEdit>
    #include <QTextEdit>
    #include <QtGui/QFormLayout>
    #include <QSqlQuery>
     
    #include "Page6_Fournisseur.h"
     
     
     
    FenFournisseur::FenFournisseur()
    {
    	Fournisseur = new QLineEdit;
    	Adresse = new QTextEdit;
    	Contact = new QLineEdit;
    	Tel = new QLineEdit;
    	Fax = new QLineEdit;
    	Mail = new QLineEdit;
     
    	// DECLARATION Forme et Incrementation de l'affichage
    	QFormLayout *layoutAjout = new QFormLayout;
    	layoutAjout->addRow("Fournisseur", Fournisseur);
        layoutAjout->addRow("Adresse", Adresse);
        layoutAjout->addRow("Contact", Contact);
    	layoutAjout->addRow("Tel", Tel);
    	layoutAjout->addRow("Fax", Fax);
    	layoutAjout->addRow("Mail", Mail);
     
    	QHBoxLayout *BoutonAjoutFournisseur = new QHBoxLayout;
    	QPushButton *BoutonAjouter = new QPushButton("Ajouter");
    	QPushButton *BoutonAnuler = new QPushButton("Annuler");
     
    	BoutonAjoutFournisseur->addWidget(BoutonAjouter);
    	BoutonAjoutFournisseur->addWidget(BoutonAnuler);
     
    	// Cree une Grille d'affichage
    	QVBoxLayout *LayoutFenFournisseur = new QVBoxLayout;
     
    	LayoutFenFournisseur->addLayout(layoutAjout);
    	LayoutFenFournisseur->addLayout(BoutonAjoutFournisseur);
    	setLayout(LayoutFenFournisseur);
     
    	QObject::connect(BoutonAjouter, SIGNAL(clicked()),this, SLOT(ValidAjout()));
    	connect(BoutonAnuler, SIGNAL(clicked()), this, SLOT(close()));
     
    }
     
     
    void FenFournisseur::ValidAjout()
    {
    	 QSqlQuery AjoutFournisseur_query;
        AjoutFournisseur_query.prepare("INSERT INTO fournisseur (id, fournisseur, adresse , contact, tel , fax , mail) "
    		 "VALUES (:id, :fournisseur , :adresse , :contact , :tel , :fax , :mail )");
    	AjoutFournisseur_query.bindValue(":fournisseur", Fournisseur->text() );
    	AjoutFournisseur_query.bindValue(":adresse", Adresse->toPlainText() );
    	AjoutFournisseur_query.bindValue(":contact", Contact->text() );
    	AjoutFournisseur_query.bindValue(":tel", Tel->text() );
    	AjoutFournisseur_query.bindValue(":fax", Fax->text() );
    	AjoutFournisseur_query.bindValue(":mail", Mail->text() );
        AjoutFournisseur_query.exec();
    	close();
    };
    Pour le slot de connection j'ai tester sans le QObject:: avant ...

  5. #5
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Ton code compile je pense non ? Et c'est uniquement quand tu utilises ta QDialog que cela ne fonctionne pas au niveau du slot ?
    Peux tu montrer comment tu fait appelle a ta QDialog ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    Oui oui je compile , ma QDialog s'ouvre, tout fonction , quitter fonctionne mais quand je fait Valider rien ne se passe , alors qu'il devrai au moins faire close();

    FenFournisseur *FenetrePage6_Fournisseur = new FenFournisseur();
    FenetrePage6_Fournisseur->show();

  7. #7
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Je suis trop bête j'avais pas vu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	QPushButton *BoutonAjouter = new QPushButton("Ajouter");
    	QPushButton *BoutonAnuler = new QPushButton("Annuler");
    Mets
    BoutonAjouter et BoutonAnuler en variable membre. Je pense que c'est ça.
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    Je me suis mal exprimé , quand je dit Quitter , je veux dire Annuler (le bouton)

    Annuler fonctionne

    Quand tu dit variable membre, c'est a dire les mettre dans la classe ? j'ai tester cela ne fonctionne pas .

  9. #9
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    Je crois que j'ai dit une bêtise ajoute la macro Q_OBJECT. C'est ça quand on utilise les IDE qui font te mache tout le taff apres on se goure...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class FenFournisseur: public QDialog
    {
        Q_OBJECT
     
        public:
            FenFournisseur();
    Sinon pour les bouton en variable membre c'est sur que c'est mieux et aussi si tu utilises le constructeur comme ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    BoutonAjouter = new QPushButton("Ajouter",this);
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    quand je rajoute Q_OBJECT

    à la compilation j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Erreur	1	error LNK2001: symbole externe non résolu "public: virtual struct QMetaObject const * __thiscall FenFournisseur::metaObject(void)const " (?metaObject@FenFournisseur@@UBEPBUQMetaObject@@XZ)	Page6_Fournisseur.obj	
    Erreur	2	error LNK2001: symbole externe non résolu "public: virtual void * __thiscall FenFournisseur::qt_metacast(char const *)" (?qt_metacast@FenFournisseur@@UAEPAXPBD@Z)	Page6_Fournisseur.obj	
    Erreur	3	error LNK2001: symbole externe non résolu "public: virtual int __thiscall FenFournisseur::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@FenFournisseur@@UAEHW4Call@QMetaObject@@HPAPAX@Z)	Page6_Fournisseur.obj
    Et le ,"this" a la fin de al creation de la variable bouton ne change rien

  11. #11
    Rédacteur

    Inscrit en
    Novembre 2006
    Messages
    1 272
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 272
    Points : 1 672
    Points
    1 672
    Par défaut
    C'est quoi la nom complet de ton .h et ton .cpp ?
    Vous voulez participer aux Tutoriels, FAQ ou Traductions et faire partie de l'équipe Qt de Developpez.
    N'hésitez pas à me contacter par MP.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    header file
    +Page6_Fournisseur.h
    Source file
    +page6
    ++Page6_Fournisseur.cpp

  13. #13
    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 Andyl Voir le message
    quand je rajoute Q_OBJECT

    à la compilation j'ai :
    comment compile tu?
    tu utilise qmake?

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    Non je suis sous Visual Studio

  15. #15
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 620
    Points : 188 610
    Points
    188 610
    Par défaut
    Recrée ton projet avec qmake -project && qmake -tp vc. Ou alors, tu utilises les boutons New Qt Class... du plug-in Visual Studio. Sinon, tes fichiers ne passent pas au moc, alors qu'ils en ont bien besoin.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  16. #16
    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 Andyl Voir le message
    Non je suis sous Visual Studio
    tu utilise le plugin pour visual? je ne pense pas puisse que tu n'as pas la compilation à jour...

    L'utilisation de Q_OBJECToblige l'utilisation de moc sur le fichier, la compilation et intégration du code généré.

    Le plus simple, est d'utiliser qmake.
    Pour cela, il te faut un .pro référenssant tes sources et de faire
    qmake -tp vc
    Cela va te généré le vcjproj à utiliser avec visual.

    Il faudra refaire ceci aprés l'ajout de nouveau fichier (ne pas oublié de mettre à jour le .pro) et l'ajout/supprésion de Q_OBJECT

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    Je vois pas pourquoi je devrai refaire le projet alors que Q_OBJECT fonctionne tres bien dans la premiere class ( principal)

  18. #18
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 620
    Points : 188 610
    Points
    188 610
    Par défaut
    Ton premier fichier passe par le moc, il a une action spécifique.
    Tandis que le second n'y passe pas, l'action n'est pas précisée dans le fichier de projet.
    Alors, deux solutions : tu ajoutes cette action pour ce fichier (bonne recherche dans le .vcproj), ou bien tu repasses au qmake.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  19. #19
    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 Andyl Voir le message
    Je vois pas pourquoi je devrai refaire le projet alors que Q_OBJECT fonctionne tres bien dans la premiere class ( principal)
    Y as deux solution :
    1- tu as le pug-in Qt visual : tu fait comme te l'a expliqué dourouc05
    2- tu utilise qmake :comme on l'as expliqué tous les deux

    Après c'est faire à la main, et je ne te le conseil pas.

    Comment as tu créé cette classe?

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 51
    Points : 18
    Points
    18
    Par défaut
    oké je vais jeter un coup d'oeil

    Reponse :

    J'ai installer le plugin QT pour VS

    Et quand je régénéré mon project il fait bien un Moc sur Les deux .h concerné et j'ai toujour le meme message d'erreur ...

    Et mes commande make qmake ou nmake ne sont pas reconnu dans le prompt QT

    et sous le prompt de Vs, nmake est reconnu mais ne fonction pas,

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/04/2007, 13h52
  2. Réponses: 5
    Dernier message: 13/10/2006, 16h22
  3. differents type de courbes JFreeChart ensemble
    Par noussa_nouha dans le forum 2D
    Réponses: 8
    Dernier message: 08/09/2006, 13h55
  4. [Sécurité] Différents types de paiements
    Par FredKéKé dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 12h43
  5. Application Portable sur differents types de BDD
    Par sylvain_2020 dans le forum Décisions SGBD
    Réponses: 11
    Dernier message: 23/09/2003, 12h59

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