0
Qt有點新奇,並試圖向網站發出HTTP GET請求。 問題是它不發送任何東西。我已經檢查過小提琴手。沒有運動。沒有錯誤,信號不會被激發。QNetworkAccessManager不會啓動
,如果我有可能被使用,所以我禁用了它們,並沒有幫助
這裏的任何其他網絡接口,我還檢查是源:
linkslooker::linkslooker(QThread *thread){
this->mainThread = thread;
Loop();
}
void linkslooker::Loop(){
// while(true){
qDebug() << "Looking for sites. Accessability:" << qnam.networkAccessible(); // Always 1
mainThread->msleep(1000); //To slow down the loop
QNetworkRequest req(QUrl("http://www.test.com"));
reply = qnam.get(req); //Get request to a QNetworkReply
if(reply->error() != QNetworkReply::NoError)
qDebug("network error!"); //There are no errors
connect(reply, SIGNAL(finished()),
SLOT(httpFinished())); //Finish request signal
connect(reply, SIGNAL(readyRead()),
this, SLOT(httpReadyRead())); //Read to start signal
connect(reply, SIGNAL(downloadProgress(qint64,qint64)),
this, SLOT(updateDataReadProgress(qint64,qint64))); //Reading Signal
connect(reply, SIGNAL(error(QNetworkReply::NetworkError)),
this, SLOT(slotError(QNetworkReply::NetworkError))); //Error Signal
// }
}
void linkslooker::httpFinished(){
qDebug() << QString::fromUtf8(m_data);
}
void linkslooker::slotError(QNetworkReply::NetworkError e) {
qDebug() << "slotError" << e ; //Not fired up
}
void linkslooker::httpReadyRead()
{
m_data.append(reply->readAll());
qDebug() << "READY TO READ";
}
void linkslooker::updateDataReadProgress(qint64 bytesRead, qint64 totalBytes)
{
if (httpRequestAborted)
qDebug() << "Network request Aborted";
qDebug() << "Have read " << bytesRead << "Out of " << totalBytes;
}
這裏是頭供參考:
#ifndef LINKSLOOKER_H
#define LINKSLOOKER_H
#include <QCoreApplication>
#include <QQueue>
#include <QtNetwork>
#include <QList>
#include <QNetworkAccessManager>
class linkslooker:public QObject{
Q_OBJECT
public:
linkslooker(QThread *);
~linkslooker();
private:
void Loop();
QThread *mainThread;
QQueue<QString> websites;
QList<QString> searched;
QNetworkAccessManager qnam;
QNetworkReply *reply;
bool httpRequestAborted;
QByteArray m_data;
private slots:
void httpFinished();
void httpReadyRead();
void updateDataReadProgress(qint64 bytesRead, qint64 totalBytes);
void slotError(QNetworkReply::NetworkError);
};
#endif // LINKSLOOKER_H
你',而(真)'循環阻塞事件循環。這就是爲什麼Qt信號不能傳送的原因。 – hank
我試過在這個帖子實際上刪除循環。它一次運行後就停止了。任何其他想法? – misha130