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 :

Quel troisième argument pour connect ?

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 48
    Par défaut Quel troisième argument pour connect ?
    Bonjour,
    je ne sais pas quoi mettre en 3eme argument de la fonction connect(sender, SIGNAL, receiver, SLOT) ici...

    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 <plusieurs includes>
    #include "interface.cpp"
    void fonction(void)  { cout << "Hello" << endl;   }
    
    int main(int argc, char *argv[])
    {	QApplication app(argc, argv);
    	QMainWindow* MyMainWindow = new QMainWindow;
    	Ui_MainWindow MyUi;
    	MyUi.setupUi(MyMainWindow);
    	MyMainWindow->show();
    	QObject::connect(MyUi.monbouton, SIGNAL(clicked()), 0 ? ?, SLOT(fonction()));
    	return app.exec();
    }
    interface.cpp ne contient que du code produit par Qt designer et uic, soit un bouton et une LineEdit :
    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
     
    /**************************************************************************/********************************************************************************
    ** Form generated from reading UI file 'interface.ui'
    **
    ** Created
    **      by: Qt User Interface Compiler version 4.8.1
    **
    ** WARNING! All changes made in this file will be lost when recompiling UI file!
    ********************************************************************************/
     
    #ifndef INTERFACE_H
    #define INTERFACE_H
     
    #include <QtCore/QVariant>
    #include <QtGui/QAction>
    #include <QtGui/QApplication>
    #include <QtGui/QButtonGroup>
    #include <QtGui/QHeaderView>
    #include <QtGui/QLineEdit>
    #include <QtGui/QMainWindow>
    #include <QtGui/QMenuBar>
    #include <QtGui/QPushButton>
    #include <QtGui/QStatusBar>
    #include <QtGui/QWidget>
     
    QT_BEGIN_NAMESPACE
     
    class Ui_MainWindow
    {
    public:
        QWidget *centralwidget;
        QLineEdit *maligne;
        QPushButton *monbouton;
        QMenuBar *menubar;
        QStatusBar *statusbar;
     
        void setupUi(QMainWindow *MainWindow)
        {
            if (MainWindow->objectName().isEmpty())
                MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
            MainWindow->resize(800, 600);
            centralwidget = new QWidget(MainWindow);
            centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
            maligne = new QLineEdit(centralwidget);
            maligne->setObjectName(QString::fromUtf8("maligne"));
            maligne->setGeometry(QRect(70, 70, 113, 20));
            monbouton = new QPushButton(centralwidget);
            monbouton->setObjectName(QString::fromUtf8("monbouton"));
            monbouton->setGeometry(QRect(110, 130, 79, 24));
            MainWindow->setCentralWidget(centralwidget);
            menubar = new QMenuBar(MainWindow);
            menubar->setObjectName(QString::fromUtf8("menubar"));
            menubar->setGeometry(QRect(0, 0, 800, 24));
            MainWindow->setMenuBar(menubar);
            statusbar = new QStatusBar(MainWindow);
            statusbar->setObjectName(QString::fromUtf8("statusbar"));
            MainWindow->setStatusBar(statusbar);
     
            retranslateUi(MainWindow);
     
            QMetaObject::connectSlotsByName(MainWindow);
        } // setupUi
     
        void retranslateUi(QMainWindow *MainWindow)
        {
            MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", 0, QApplication::UnicodeUTF8));
            monbouton->setText(QApplication::translate("MainWindow", "PushButton", 0, QApplication::UnicodeUTF8));
        } // retranslateUi
     
    };
     
    namespace Ui {
        class MainWindow: public Ui_MainWindow {};
    } // namespace Ui
     
    QT_END_NAMESPACE
     
    #endif // INTERFACE_H

    Avec 0 en 3eme argument, ça compile, l'interface s'affiche mais au clic j'ai un "Cannot connect QPushButton::clicked() to (null)::fonction()" dans la console :



    Ce n'est pas "this" non plus

    Alors que mettre en argument pour que un clic sur le bouton appelle la fonction fonction() ?

  2. #2
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Salut

    Le système de signaux et slots de Qt 4 ne permet de connecter que des QObject entre eux. Donc pas de fonction libre. Met ta fonction dans une classe (this par exemple) ou passe à Qt 5 pour avoir plus de liberté dans le connect (voir Les signaux et slots dans Qt5)

  3. #3
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Tu devrais déjà t'intéresser à la manière correcte d'utiliser les boites de dialogues créées par Qt designer, car, là, tu fais du grand n'importe quoi

    Il faudrait écrire un roman pour t'expliquer ton erreur et, comme tout est mis dans l'aide de Qt, je te renvoie simplement aux différents exemples que tu ne manqueras pas de trouver

    Ceci dit, la syntaxe de connect est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void connect(Emetteur, SignalEmit, Recepteur, SlotAppelé);
    • Emetteur et Recepteur doivent être des QObject
    • SignalEmit doit être déclaré dans une des sections signals de Emetteur
    • SlotAppelé doit être déclaré dans une des section slots de Recepteur (public slots si le récepteur peut recevoir un signal émis depuis "ailleurs", private slots si le récepteur et que l'émetteur sont une seule et meme chose )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  4. #4
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Il faudrait écrire un roman pour t'expliquer ton erreur et, comme tout est mis dans l'aide de Qt, je te renvoie simplement aux différents exemples que tu ne manqueras pas de trouver
    Mais... cela veut dire... que tu te prives de l'occasion d'écrire un roman ? Mais.. que t'arrive-t-il ?
    Allez, on va bien réussir à te lancer dessus ?

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Citation Envoyé par gbdivers Voir le message
    Mais... cela veut dire... que tu te prives de l'occasion d'écrire un roman ? Mais.. que t'arrive-t-il ?
    Ben, je sais pas, je suis pas au mieux de ma forme
    Allez, on va bien réussir à te lancer dessus ?
    Humm... non, vraiment, pas ce soir
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 48
    Par défaut Resolu
    Merci Gbdivers, tu as trouvé la solution : il faut utiliser des classes. Un pouce Up pour Gbdivers.

    Pour ceux qui cherchent, j'ai trouvé exactement l'exemple basique que je cherchais ici : http://sector.ynet.sk/qt4-tutorial/m...plication.html

    Marqué comme résolu. Y'a pas à dire, ce forum est une mine d'or.

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

Discussions similaires

  1. Quel client oracle pour se connecter à une base 10.2
    Par jmnicolas dans le forum Connexions aux bases de données
    Réponses: 2
    Dernier message: 22/04/2011, 11h15
  2. Quel materiel choisir pour ma connection wifi ?
    Par quaresma dans le forum Composants
    Réponses: 1
    Dernier message: 22/09/2009, 10h23
  3. [Migration .NET] Quels arguments pour cela ?
    Par chris92 dans le forum Général Dotnet
    Réponses: 17
    Dernier message: 01/06/2007, 19h03
  4. Réponses: 27
    Dernier message: 14/12/2006, 19h49
  5. Quel matériel nécessaire pour connection sans fil?
    Par shokin dans le forum Hardware
    Réponses: 2
    Dernier message: 23/12/2005, 06h00

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