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 :

Connexion avec un QObject personnalisé

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 774
    Par défaut Connexion avec un QObject personnalisé
    Bonjour,

    J'essaye de créer un petit updater. Actuellement, sa GUI se limite à un bouton. Je connecte le signal cliked() de ce bouton au signal lauchnUpdate() de ma classe updaterHandler. Un problème survient :

    .\src\main.cpp(15) : error C2665: 'QObject::connect': aucune des 2 surcharges n'a pu convertir tous les types d'arguments
    a:\qt\4.5.2\include\qtcore\../../src/corelib/kernel/qobject.h(191): peut être 'bool QObject::connect(const QObject *,const char *,const QObject *,const char *,Qt::ConnectionType)'
    a:\qt\4.5.2\include\qtcore\../../src/corelib/kernel/qobject.h(203): ou 'bool QObject::connect(const QObject *,const char *,const char *,Qt::ConnectionType) const'
    lors de la tentative de mise en correspondance de la liste des arguments '(QPushButton *, const char *, updaterHandler (__cdecl *)(void), const char *)'
    J'utilise Visual Studio 2008 avec Qt 4.5.2, compilé à la main.

    Voici mes sources.

    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
    #include <QtGui/QApplication>
    #include <QtGui/QPushButton>
     
    #include <QObject>
     
    #include <QtNetwork/QNetworkAccessManager>
    #include <QtNetwork/QNetworkRequest>
    #include <QtNetwork/QNetworkReply>
     
    #include <QtCore/QUrl>
    #include <QtCore/QFile>
     
    class updaterHandler : public QObject
    {
    Q_OBJECT
    public:
    updaterHandler(QObject * parent = 0);
    ~updaterHandler();
    public slots:
    void launchUpdate();
    private:
    QNetworkAccessManager manager;
    QNetworkRequest request;
    QUrl url;
    QFile file;
    QNetworkReply * reply;
    };
     
    #include "main.moc"
     
    int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    updaterHandler handler();
    QPushButton bouton("Mettre jour");
    QObject::connect (& bouton , SIGNAL( pressed() ),
    & handler, SLOT ( launchUpdate() ) );
    bouton.show();
    return a.exec();
    }
    Si je déclare mon handler en tant que pointeur, et que j'enlève mon esperluette à la connexion, ça compile parfaitement. Par contre, la connexion plante misérablement à l'exécution...

    Quelqu'un aurait-il une idée ? Merci d'avance !
    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 !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    1- http://qt.developpez.com/faq/?page=g...ECT-moc-header
    2- ceci est la déclaration d'une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     updaterHandler handler();

  3. #3
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 774
    Par défaut
    Citation Envoyé par yan Voir le message
    2- ceci est la déclaration d'une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     updaterHandler handler();
    Merci, voilà, maintenant, ça compile (et c'est pas la première fois que ce genre de truc m'arrive...).

    Par contre, il reste un beau plantage à l'exécution... pendant l'appel de QObject::connect() !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception non gérée à 0x671aa126 (QtCored4.dll) dans trunk.exe : 0xC0000005: Violation d'accès lors de la lecture de l'emplacement 0x85c8b60f.
    J'ai bien vérifié : il n'y a qu'une seule et unique version de Qt accessible (les dossiers des deux autres ont été renommés).
    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 !

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Je pense que tu as un problème dans
    launchUpdate et avec le pointeur reply.
    Si tu peut mettre le code de void launchUpdate();

  5. #5
    Responsable Qt & Livres


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

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2008
    Messages : 26 774
    Par défaut
    Voici.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void updaterHandler::launchUpdate()
    {
    QNetworkRequest request (this->url);
    QNetworkReply * reply = manager.get(request);
    }
    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 !

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    QNetworkReply * reply = manager.get(request);
    reply n'est pas le même que celui de updaterHandler.
    C'est pas toi qui as eu un bébé pourtant

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

Discussions similaires

  1. Echec de connexion avec la BD
    Par manel007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/02/2005, 12h01
  2. [ORACLE 10g Linux] Pbm de connexion avec un Client winXP
    Par zarbiwayne dans le forum Administration
    Réponses: 26
    Dernier message: 20/08/2004, 22h37
  3. Connexion avec Perl
    Par BARBIER dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 05/05/2004, 14h05
  4. Connexion avec interbase
    Par X Trips dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 30/03/2004, 13h15
  5. [WSAD5] Connexion avec une base Lotus
    Par mickey dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 11/03/2004, 08h37

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