以前の質問のフォローアップとして、要求されたページが存在するにもかかわらず、ダウンロードされたデータが空であるという問題に直面しています (少なくとも Web ブラウザーから)。
私は、データが実際にダウンロードされ、デバッグ行fileDownloaded()
が呼び出され、からの信号downloaded()
がに渡され、ボタンがクリックされるたびに行SLOT(loadText()
をコンソールに出力すると推測しています"STRING: "
メインウィンドウ.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <string.h>
#include <iostream>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QByteArray>
#include <QTextCodec>
#include <QDebug>
using namespace std;
namespace Ui {
class MainWindow;
}
class DataFetch : public QObject
{
Q_OBJECT
public:
explicit DataFetch(QUrl url, QObject *parent=0);
virtual ~DataFetch();
QByteArray downloadedData() const;
signals:
void downloaded();
public slots:
void fileDownloaded(QNetworkReply* reply);
private:
QNetworkAccessManager m_webManager;
QByteArray m_downloaded;
};
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
DataFetch * m;
public slots:
void btnClickHandler();
private slots:
void loadText();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
メインウィンドウ.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
DataFetch::DataFetch(QUrl url, QObject *parent):
QObject(parent)
{
connect(&m_webManager, SIGNAL(finished(QNetworkReply*)), SLOT(fileDownloaded(QNetworkReply*)));
QNetworkRequest request(url);
m_webManager.get(request);
}
DataFetch::~DataFetch() { }
void DataFetch::fileDownloaded(QNetworkReply *reply)
{
QByteArray m_downloaded = reply->readAll();
qDebug() << "received reply";
reply->deleteLater();
emit downloaded();
}
QByteArray DataFetch::downloadedData() const
{
return m_downloaded;
}
void MainWindow::loadText()
{
cout << "STRING: " << m->downloadedData().data() << endl;
ui->lblText->setText(m->downloadedData());
}
void MainWindow::btnClickHandler()
{
QUrl textURL = QUrl("http://192.168.2.7/index.html");
m = new DataFetch(textURL, this);
connect(m, SIGNAL(downloaded()), SLOT(loadText()));
}
main.cppはデフォルトのテンプレートから変更されていません。
助けてくれてありがとう!