我正在尝试写一个Qt
调用网络服务的应用程序。这是一个控制台应用程序,url 将作为命令行参数传入。我搜索了例如http
程序在Qt
并找到这个链接:
http://qt-project.org/doc/qt-5/qnetworkaccessmanager.html 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
有同等的吗QNetworkAccessManager
对于非 GUI/控制台类型的应用程序?
“this”是对象的 this 指针,因此在 main.cpp 中它会导致错误,您应该编写一些将使用网络的类,然后在 main 函数中使用此类
应该是这样的。当您运行应用程序时,您将获得 Qt 站点的 html 代码
这只是一个例子,将来我们可以在这里添加构造函数、析构函数,也许还可以添加信号(信号可以帮助我们与其他类进行通信,如果我们需要的话)
*.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));
}
main
#include "net.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Net handler;
handler.CheckSite("http://qt-project.org");
return a.exec();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)