Ten*_*enG 1 c++ qt qnetworkaccessmanager
我正在尝试编写一个Qt调用 Web 服务的应用程序。这是一个控制台应用程序,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")));
Run Code Online (Sandbox Code Playgroud)
现在,如果我把它粘贴到我的控制台应用程序中main,我显然会收到构建错误,因为this它不存在。我得到:
invalid use of 'this' in non-member function
Run Code Online (Sandbox Code Playgroud)
QNetworkAccessManager非 GUI/控制台类型的应用程序是否有等价物?
“this”是对象的 this 指针,所以在 main.cpp 中它会导致错误,你应该写一些你将使用网络的类,然后在主函数中使用这个类
它应该是这样的。当您运行应用程序时,您将获得 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
Run Code Online (Sandbox Code Playgroud)
*.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));
}
Run Code Online (Sandbox Code Playgroud)
主要的
#include "net.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Net handler;
handler.CheckSite("http://qt-project.org");
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3887 次 |
| 最近记录: |