Qt를 사용하여 웹 페이지를 가져와 화면에 인쇄하려고합니다. 문제는 항상 ""입니다. 그것은 완료 SLOT에 그것을 만들지 않습니다. connect()에 문제가 있는지 알 수 없습니다. 코드는 오류없이 컴파일됩니다. 아직 이벤트 루프를 사용하지 않으려 고합니다. 여기 Qt QNetworkAccessManager를 사용하여 웹 페이지를 가져올 때 항상 ""을 반환합니다.
코드입니다 :net.h
#ifndef NET_H
#define NET_H
#include <QObject>
#include <QtNetwork>
#include <QString>
#include <QDebug>
class net : public QObject
{
Q_OBJECT
public:
explicit net(QObject *parent = 0);
void get_site(QString url);
QString data;
signals:
public slots:
void err(QNetworkReply *);
void done(QNetworkReply *);
private:
};
#endif // NET_H
net.cpp :
#include "net.h"
net::net(QObject *parent) :
QObject(parent)
{
}
void net::get_site(QString url) {
QNetworkAccessManager man;
QNetworkRequest request;
request.setUrl (QUrl(url));
connect (&man , SIGNAL(finished(QNetworkReply*)) ,this, SLOT(done(QNetworkReply*)));
connect (&man , SIGNAL(finished(QNetworkReply*)) ,this, SLOT(err(QNetworkReply *)));
man.get (QNetworkRequest(QUrl(url)));
}
void net::done(QNetworkReply * reply) {
data = QString(reply->readAll());
}
void net::err(QNetworkReply * reply) {
data = QString(reply->errorString());
}
그리고 main.cp p는 :
#include <QCoreApplication>
#include "net.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
net netobj;
netobj.get_site("http://stackoverflow.com");
qDebug() << netobj.data;
return a.exec();
}
을 글쎄, 네 문제가있어. 이벤트 루프가 그 일을하게하지 않고는 이것이 작동 할 방법이 없습니다. 슬롯에 중단 점을 넣고 무슨 일이 일어나는 지 봅니다. – MrEricSir
그러나 그것을 사용하지 않은 소스가 있습니다. 사용하는 앱을 사용하는 것 같습니다. 확실하지 않습니다. Qt를 처음 사용합니다. – Nve