構造我嘗試使用下面的代碼,它使用Qt庫未定義的引用與QNetworkAccessManager派生
#include <QtWidgets/QApplication>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkAccessManager>
#include <QtCore/QString>
#include <iostream>
class SillyRequest : public QNetworkAccessManager
{
Q_OBJECT
public:
SillyRequest();
QString getData();
public slots:
void replyFinished(QNetworkReply *);
private:
QString collectedData;
};
QString SillyRequest :: getData()
{
return collectedData;
}
SillyRequest :: SillyRequest()
{
connect(this, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}
void SillyRequest :: replyFinished(QNetworkReply *reply)
{
collectedData = reply->readAll();
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
SillyRequest *network = new SillyRequest;
QNetworkRequest request;
request.setUrl(QUrl("http://qt.nokia.com"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");
QNetworkReply *reply = network->get(request);
std :: cout << network->getData().toStdString() << std :: endl;
return app.exec();
}
我收到以下錯誤,當我編譯讀取html頁面。我不確定我沒有以正確的方式做什麼。
testing.cpp:(.text+0x73): undefined reference to `vtable for SillyRequest'
collect2: error: ld returned 1 exit status
Makefile:192: recipe for target 'network' failed
make: *** [network] Error 1
我從QNetworkAccessManager繼承以實現'replyFinished'插槽。 '完成'信號已經是'QNetworkAccessManager'的一部分。
不'SillyRequest'有任何虛擬方法? –
在構造函數中,嘗試'connect(...,SLOT(SillyRequest :: replyFinished(QNetworkReply *))' – 0x499602D2