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 :

QGeoCodingManager::geocode n'envoie pas de signaux


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 37
    Points : 62
    Points
    62
    Par défaut QGeoCodingManager::geocode n'envoie pas de signaux
    Bonjour, je voudrais récupérer les coordonnées correspondant à une adresse.
    Pour cela je me suis tourné vers QGeoCodingManager et la méthode geocode.
    Voici mes sources:
    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
     
    #include <QWidget>
    #include <QGeoCodeReply>
    #include <QGeoAddress>
    #include <QGeoCodingManager>
    #include <QGeoCoordinate>
    #include <QGeoLocation>
    #include <QGeoServiceProvider>
     
    namespace Ui {
    class Widget;
    }
     
    class Widget : public QWidget
    {
        Q_OBJECT
     
    public:
        explicit Widget(QWidget *parent = 0);
        ~Widget();
     
    private slots:
        void on_pushButtonLocalisation_clicked();
        void onError(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString = QString());
        void onFinished(QGeoCodeReply *reply);
     
    private:
        Ui::Widget *ui;
        QGeoCodingManager *geo;  
    };
    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
     
    void Widget::on_pushButtonLocalisation_clicked()
    {
        QGeoServiceProvider qGeoService("osm");
        geo = qGeoService.geocodingManager();
        if (geo!=0)
        {
            QLocale qLocaleC(QLocale::C, QLocale::AnyCountry);
            geo->setLocale(qLocaleC);
            QGeoAddress qGeoAddr;
            qGeoAddr.setCountry(QString::fromUtf8("France"));
            qGeoAddr.setPostalCode(QString::fromUtf8("72000"));
            qGeoAddr.setCity(QString::fromUtf8("Le Mans"));
     
            connect(geo,&QGeoCodingManager::finished,this,&Widget::onFinished);
            connect(geo,&QGeoCodingManager::error,this,&Widget::onError);
     
            geo->geocode(qGeoAddr);        
        }
    }
    void Widget::onError(QGeoCodeReply *reply, QGeoCodeReply::Error error, QString errorString)
    {
     
        qDebug()<<errorString;
    }
     
    void Widget::onFinished(QGeoCodeReply *reply)
    {
        QList<QGeoLocation> qGeoLocs = reply->locations();
        qDebug() << qGeoLocs.size() << " location(s) returned." ;
     
     
        foreach (QGeoLocation qGeoLoc, qGeoLocs) {
     
            QGeoCoordinate qGeoCoord;
            qGeoCoord=qGeoLoc.coordinate();
            qDebug()<< "Lat.:  " << qGeoCoord.latitude() ;
            qDebug()<< "Long.: " << qGeoCoord.longitude() ;
            qDebug()<< "Alt.:  " << qGeoCoord.altitude() ;
        }
    }
    L'appel à geocode ne déclenche ni le signal error, ni le signal finished...
    Je ne comprend pas pourquoi.

  2. #2
    Membre averti
    Femme Profil pro
    Ingénieur informatique scientifique
    Inscrit en
    Mai 2010
    Messages
    313
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur informatique scientifique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mai 2010
    Messages : 313
    Points : 301
    Points
    301
    Par défaut
    Bonjour,

    une explication que je verrai est que lorsque le signal "error" ou finished" est émis, c'est également la fin de ta fonction "on_pushButtonLocalisation_clicked()" et du coup les connections que tu as faites sont détruites. Peut être que du coup la connexion est détruite à peu près au même moment où ton signal est émis.

    A ta place je tenterai d'initialiser la variable geo (ligne "geo = qGeoService.geocodingManager();") et les connections dans le constructeur de Widget au lieu de le faire dans le slot "on_pushButtonLocalisation_clicked()".

Discussions similaires

  1. Submit n'envoie pas les paramètres
    Par CinErarY dans le forum Langage
    Réponses: 4
    Dernier message: 05/02/2007, 09h32
  2. [Mail] La fonction error_log n'envoie pas de mail
    Par canabral dans le forum Langage
    Réponses: 2
    Dernier message: 06/09/2006, 11h04
  3. formulaire n'envoi pas le corps du message
    Par alexp dans le forum Langage
    Réponses: 16
    Dernier message: 25/06/2006, 16h51
  4. formulaire qui n'envoie pas a la bonne page
    Par hansaplast dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 19/06/2006, 14h13
  5. L'envois de mail ne m'envois pas de mail ...
    Par PrinceMaster77 dans le forum ASP
    Réponses: 10
    Dernier message: 27/10/2004, 16h28

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