2016-05-11 10 views
0

Ich habe den folgenden Code:QNetworkAccessManager funktioniert nicht

MainWindow::MainWindow(QWidget *parent) : 
    QMainWindow(parent), 
    ui(new Ui::MainWindow), 
    m_networkAccessManager(new QNetworkAccessManager(this)) 
{ 
    ui->setupUi(this); 

    connect(m_networkAccessManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyForGeoCoordinates(QNetworkReply*))); 
    getCoordinates(); 
} 

void MainWindow::getCoordinates() 
{ 
    std::string query = "http://maps.google.com/maps/api/geocode/json?address=warsaw&sensor=false&language=en"; 
    QNetworkRequest request(QUrl(QString::fromStdString(query))); 
    m_reply = m_networkAccessManager->get(request); 

    connect(m_reply, SIGNAL(finished()), this, SLOT(rep())); 
    connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(slotError(QNetworkReply::NetworkError))); 
    connect(m_reply, SIGNAL(readyRead()), this, SLOT(rep())); 
} 

und ich möchte Anfrage an den Google-Server senden und Antwort zu bekommen, aber wenn ich Anfrage keine der genannten Slots senden nicht nennen, Also, was mache ich falsch? Wenn ich diese Adresse in meinen Browser lege, bekomme ich Daten.

Antwort

2

Nun, ich denke, dein Fehler in Verbindungen. Sie müssen erklärt vor Sie get() Funktion aufrufen.

+0

Ich denke nicht, denn connect funktioniert nur auf echten Objekten. In Ihrer Lösung habe ich connect (null, SIGNAL (.....), so dass es zu einem Fehler – bladzio

+0

Warte. Wie Sie denken, dass die Antwort Sie etwas ohne Aktion ausstoßen kann? Sie erhalten es nur von 'get()' , aber Sie tun nichts damit, um ein Signal zu empfangen. – someoneinthebox

+0

m_networkAccessManager-> get() sendet mir Anfrage an den Server und erhalten() gibt QNetworkReply obj, die Signal das gleiche für m_networkAccessManager zurück, wenn Netzwerkantwort wird das Signal fertig sein wird – bladzio