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 :

Problème de connect (signal/slots)


Sujet :

Qt

  1. #1
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut Problème de connect (signal/slots)
    Bonjour,

    J'ai fait une erreur mais je n'arrive pas a la cerner.
    Je suis entrain de développer un application C++/Qt en utilisant le designer.

    Voici les fichiers :

    Le fichier généré par uic (ui_winMain.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
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    /********************************************************************************
    ** Form generated from reading ui file 'winMain.ui'
    **
    ** Created: Thu 20. Mar 15:37:18 2008
    **      by: Qt User Interface Compiler version 4.3.4
    **
    ** WARNING! All changes made in this file will be lost when recompiling ui file!
    ********************************************************************************/
     
    #ifndef UI_WINMAIN_H
    #define UI_WINMAIN_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QMainWindow>
    #include <QtGui/QMenu>
    #include <QtGui/QMenuBar>
    #include <QtGui/QStatusBar>
    #include <QtGui/QTreeWidget>
    #include <QtGui/QWidget>
     
    class Ui_ui_winMain
    {
    public:
        QAction *actionAjouter;
        QAction *actionVider;
        QWidget *centralwidget;
        QTreeWidget *treeWidget;
        QMenuBar *menubar;
        QMenu *menuArticles;
        QStatusBar *statusbar;
     
        void setupUi(QMainWindow *ui_winMain)
        {
        if (ui_winMain->objectName().isEmpty())
            ui_winMain->setObjectName(QString::fromUtf8("ui_winMain"));
        ui_winMain->resize(671, 474);
        actionAjouter = new QAction(ui_winMain);
        actionAjouter->setObjectName(QString::fromUtf8("actionAjouter"));
        actionVider = new QAction(ui_winMain);
        actionVider->setObjectName(QString::fromUtf8("actionVider"));
        centralwidget = new QWidget(ui_winMain);
        centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
        treeWidget = new QTreeWidget(centralwidget);
        treeWidget->setObjectName(QString::fromUtf8("treeWidget"));
        treeWidget->setGeometry(QRect(10, 10, 651, 192));
        treeWidget->setRootIsDecorated(false);
        treeWidget->setItemsExpandable(false);
        ui_winMain->setCentralWidget(centralwidget);
        menubar = new QMenuBar(ui_winMain);
        menubar->setObjectName(QString::fromUtf8("menubar"));
        menubar->setGeometry(QRect(0, 0, 671, 21));
        menuArticles = new QMenu(menubar);
        menuArticles->setObjectName(QString::fromUtf8("menuArticles"));
        ui_winMain->setMenuBar(menubar);
        statusbar = new QStatusBar(ui_winMain);
        statusbar->setObjectName(QString::fromUtf8("statusbar"));
        ui_winMain->setStatusBar(statusbar);
     
        menubar->addAction(menuArticles->menuAction());
        menuArticles->addAction(actionAjouter);
        menuArticles->addAction(actionVider);
     
        retranslateUi(ui_winMain);
     
        QMetaObject::connectSlotsByName(ui_winMain);
        } // setupUi
     
        void retranslateUi(QMainWindow *ui_winMain)
        {
        ui_winMain->setWindowTitle(QApplication::translate("ui_winMain", "Logith\303\250que", 0, QApplication::UnicodeUTF8));
        actionAjouter->setText(QApplication::translate("ui_winMain", "Ajouter", 0, QApplication::UnicodeUTF8));
        actionVider->setText(QApplication::translate("ui_winMain", "Vider", 0, QApplication::UnicodeUTF8));
        treeWidget->headerItem()->setText(0, QApplication::translate("ui_winMain", "R\303\251f\303\251rence", 0, QApplication::UnicodeUTF8));
        treeWidget->headerItem()->setText(1, QApplication::translate("ui_winMain", "D\303\251signation", 0, QApplication::UnicodeUTF8));
        treeWidget->headerItem()->setText(2, QApplication::translate("ui_winMain", "Quantiti\303\251", 0, QApplication::UnicodeUTF8));
        treeWidget->headerItem()->setText(3, QApplication::translate("ui_winMain", "prixHT", 0, QApplication::UnicodeUTF8));
        treeWidget->headerItem()->setText(4, QApplication::translate("ui_winMain", "prixTTC", 0, QApplication::UnicodeUTF8));
        menuArticles->setTitle(QApplication::translate("ui_winMain", "Articles", 0, QApplication::UnicodeUTF8));
        } // retranslateUi
     
    };
     
    namespace Ui {
        class ui_winMain: public Ui_ui_winMain {};
    } // namespace Ui
     
    #endif // UI_WINMAIN_H
    Un fichier qui complète la définition (impl_winMain.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
    #include "ui_winMain.h"
     
    namespace Impl
    {
        class impl_winMain : public Ui::ui_winMain
        {
            Q_OBJECT
     
            public:
                impl_winMain();
            public slots:
            void test();
        };
    }
    Puis implémentation (impl_winMain.cpp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "impl_winMain.h"
     
    namespace Impl
    {
        impl_winMain::impl_winMain()
        {
          connect(this, SIGNAL(clicked()), this, SLOT(quit()));
        }
    }
    L'erreur de compilation est :
    error: `connect' undeclared (first use this function)|
    J'ai tenté avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include "impl_winMain.h"
     
    namespace Impl
    {
        impl_winMain::impl_winMain() :QMainWindow()
        {
          connect(this, SIGNAL(clicked()), this, SLOT(quit()));
        }
    }
    Le message d'erreur est alors :
    error: type `class QMainWindow' is not a direct base of `Impl::impl_winMain'|
    Je me suis apuillé sur http://matthieu-brucher.developpez.c...t/signal-slot/

    J'ai certainement oublier quelque chose mais la ca fait un moment que je cherche je trouve pas :/

    Merci d'avance.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Mai 2007
    Messages : 774
    Points : 969
    Points
    969
    Par défaut
    Salut,

    essaie en mettant QObject::connect(...) au lieu de simplement connect. J'ai eu une erreur comme ca récemment.

    G.
    Un problème avec Qt ? Vous trouverez votre réponse ici : http://doc.trolltech.com/4.6/overviews.html
    En français (traduction réalisée par l'équipe Qt de DVP) : http://qt.developpez.com/doc/4.6/vues-d-ensemble/

  3. #3
    Membre expert

    Avatar de IrmatDen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 727
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 727
    Points : 3 266
    Points
    3 266
    Par défaut
    Salut,

    Ce n'est pas la bonne façon d'intégrer une interface au code. Cf la section adéquate du manuel du designer pour les 3 approches possibles

  4. #4
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Merci de ton attention, alors j'ai tenté de faire comme tu dis et j'ai :
    error: no matching function for call to `QObject::connect(Impl::impl_winMain* const, const char[11], Impl::impl_winMain* const, const char[8])'|
    J'ai peut-être fait une faute sur les paramètres de la méthode connect ...
    Je ne vois que ça, mais je vois pas où.

    Salut,

    Ce n'est pas la bonne façon d'intégrer une interface au code. Cf la section adéquate du manuel du designer pour les 3 approches possibles
    Je m'y met de ce pas, merci c'est ce que je cherchais.
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

  5. #5
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Suis le lien de IrmatDen

    connect est une fonction membre de QObject. Il faut donc hériter de QObject ou de l'une de ses filles pour y avoir accès.

    Par contre, dans le cas d'une création sous Qt Designer, il y a 2 méthodes propres. Tu devrais les trouver dans le manuel de Qt Designer.

  6. #6
    Expert confirmé

    Homme Profil pro
    SDE
    Inscrit en
    Août 2007
    Messages
    2 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : SDE

    Informations forums :
    Inscription : Août 2007
    Messages : 2 013
    Points : 4 324
    Points
    4 324
    Par défaut
    Voilà c'est ok tout marche, et c'est propre. merci beaucoup à vous
    http://alaindefrance.wordpress.com
    Certifications : SCJP6 - SCWCD5 - SCBCD5 - SCMAD1
    SDE at BitTitan

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

Discussions similaires

  1. [QtCore] Problème de base signal / slot
    Par Neitsa dans le forum PyQt
    Réponses: 2
    Dernier message: 21/09/2011, 14h29
  2. connect(), signal et slot
    Par Go'Gaule dans le forum Débuter
    Réponses: 3
    Dernier message: 27/05/2011, 08h26
  3. Problème avec un signal/slot
    Par scary dans le forum Qt
    Réponses: 12
    Dernier message: 11/12/2009, 21h20
  4. [Qt4-Win] Connect (SIGNAL/SLOT)
    Par mikemarti dans le forum Débuter
    Réponses: 5
    Dernier message: 20/06/2008, 02h05
  5. connect Signal et slot perso
    Par freecircus dans le forum Qt
    Réponses: 3
    Dernier message: 13/12/2006, 20h25

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