我正在尝试编写一个调用Web服务的Qt
应用。这是一个控制台应用程序,url将作为命令行参数传入。我在http
中搜索了Qt
个例程,并找到了这个链接:
http://qt-project.org/doc/qt-5/qnetworkaccessmanager.html
这里有以下代码示例:
QNetworkAccessManager *manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)),
this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(QUrl("http://qt-project.org")));
现在,如果我把它粘贴到我的控制台应用程序中,在main
中,我显然会遇到构建错误,因为this
不存在。我明白了:
invalid use of 'this' in non-member function
非GUI /控制台类型的应用程序是否有等效的QNetworkAccessManager
?
答案 0 :(得分:4)
“this”是一个对象的this指针,所以在main.cpp中它会导致错误,你应该编写一些你将使用网络的类,然后在main函数中使用这个类
它应该是这样的。当您运行应用程序时,您将获得Qt站点的HTML代码
这只是一个例子,将来我们可以在这里添加constructot,析构函数,也许信号(如果需要的话,信号可以帮助我们与其他类进行通信)
*的.h
#ifndef NET_H
#define NET_H
#include <QObject>
#include <QtCore>
#include <QNetworkAccessManager>
#include <QNetworkReply>
class Net : public QObject
{
Q_OBJECT
QNetworkAccessManager *manager;
private slots:
void replyFinished(QNetworkReply *);
public:
void CheckSite(QString url);
};
#endif // NET_H
*。CPP
#include "net.h"
void Net::replyFinished(QNetworkReply *reply)
{
qDebug() << reply->readAll();
}
void Net::CheckSite(QString url)
{
QUrl qrl(url);
manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
manager->get(QNetworkRequest(qrl));
}
主
#include "net.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Net handler;
handler.CheckSite("http://qt-project.org");
return a.exec();
}