【发布时间】:2014-06-11 17:14:43
【问题描述】:
我正在尝试在 Qt 中实现基本的 http 连接 http://developer.nokia.com/community/wiki/Creating_an_HTTP_network_request_in_Qt,但我很难实现插槽。我是 Qt 新手。
C:\Qt5\Tools\QtCreator\bin\miniHTTP\main.cpp:10: 错误:在“mTest”中请求成员“Test”,它属于非类类型“coreEng()” mTest.Test();
//main.cpp
#include <QCoreApplication>
#include <coreeng.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
coreEng mTest;
mTest.Test();
return a.exec();
}
//coreeng.h
#ifndef COREENG_H
#define COREENG_H
#include <QDebug>
#include <QObject>
#include <QNetworkAccessManager>
class coreEng : public QObject
{
Q_OBJECT
public:
explicit coreEng(QObject *parent = 0);
void Test();
private slots:
public slots:
void connect();
void url();
void finishedSlot();
private:
QNetworkAccessManager* nam;
};
#endif // COREENG_H
//coreeng.cpp
#include "coreeng.h"
#include <QNetworkAccessManager>
#include <QUrl>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QImageReader>
coreEng::coreEng(QNetworkReply* parent) :
QObject(parent)
{
}
void coreEng::Test();
void coreEng::connect(){
QObject::connect(nam, SIGNAL(finished(QNetworkReply*)),
this, SLOT(finishedSlot(QNetworkReply*)));
}
void coreEng::url(){
QUrl url("http://www.forum.nokia.wiki");
QNetworkReply* reply = nam->get(QNetworkRequest(url));
}
void coreEng::finishedSlot(QNetworkReply* reply){
QVariant statusCodeV = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute);
QVariant redirectionTargetUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
if (reply->error() == QNetworkReply::NoError)
{
QImageReader imageReader(reply);
QImage pic = imageReader.read();
QByteArray bytes = reply->readAll(); // bytes
QString string(bytes); // string
}
else
{
}
delete reply;
}
【问题讨论】:
-
en.wikipedia.org/wiki/Most_vexing_parse 将
coreEng mTest();更改为coreEng mTest; -
@drescherjm 谢谢。这似乎让我走得更远了,但我仍然在初始化对象时遇到问题-> coreeng.cpp:8:错误:'coreEng::coreEng(QNetworkReply*)' 的原型与'coreEng'类中的任何内容都不匹配
标签: c++ qt qnetworkaccessmanager