maybnxtseasn
5th March 2012, 01:07
Made a simple little downloader class and im not sure how to implement it so this class can send out downloadprogress signals so my other DIALOG applications that use this class can catch the downloadprogress signals and send them to its slot to handle the signal appropriatly to display a progressbar in action. Below is my class definition
class CDownloadManager : public QObject {
Q_OBJECT
public:
CDownloadManager(QObject *parent = 0) : QObject(parent), m_pNetworkManager(NULL) { };
void Initialize();
~CDownloadManager() { delete m_pNetworkManager; };
public:
QByteArray GetDownloadedData() { return m_DownloadData; }
void DownloadFile(const QString& strUrl);
signals:
void DownloadReady(QByteArray& byteArray);
private slots:
__slot void DownloadFinished(QNetworkReply *pNetReply);
private:
QNetworkAccessManager* m_pNetworkManager;
QByteArray m_DownloadData;
};
Here is my implementation of this class
#include "CDownloadManager.h"
void CDownloadManager::Initialize() {
m_pNetworkManager = new QNetworkAccessManager;
connect(m_pNetworkManager, SIGNAL(finished(QNetworkReply*)), SLOT(DownloadFinished(QNetworkReply*)));
}
void CDownloadManager::DownloadFile(const QString& strUrl) {
QNetworkRequest netRequest(strUrl);
m_pNetworkManager->get(netRequest);
}
__slot void CDownloadManager::DownloadFinished(QNetworkReply *pNetReply) {
// Once download is finished save data
m_DownloadData = pNetReply->readAll();
emit DownloadReady(m_DownloadData);
}
now i have the above class inside my dialog class like so
class Dialog : QObject {
public:
...
...
public slots:
void UpdateDownloadProgress(qint64,qint64)
private:
CDownloadManager m_Downloader;
}
I want my m_Downloader object to emite a downloadprogress(qint64,qint64) signals and catch them within my UpdateDownloadProgress(qint64,qint64) slot for my dialog
class CDownloadManager : public QObject {
Q_OBJECT
public:
CDownloadManager(QObject *parent = 0) : QObject(parent), m_pNetworkManager(NULL) { };
void Initialize();
~CDownloadManager() { delete m_pNetworkManager; };
public:
QByteArray GetDownloadedData() { return m_DownloadData; }
void DownloadFile(const QString& strUrl);
signals:
void DownloadReady(QByteArray& byteArray);
private slots:
__slot void DownloadFinished(QNetworkReply *pNetReply);
private:
QNetworkAccessManager* m_pNetworkManager;
QByteArray m_DownloadData;
};
Here is my implementation of this class
#include "CDownloadManager.h"
void CDownloadManager::Initialize() {
m_pNetworkManager = new QNetworkAccessManager;
connect(m_pNetworkManager, SIGNAL(finished(QNetworkReply*)), SLOT(DownloadFinished(QNetworkReply*)));
}
void CDownloadManager::DownloadFile(const QString& strUrl) {
QNetworkRequest netRequest(strUrl);
m_pNetworkManager->get(netRequest);
}
__slot void CDownloadManager::DownloadFinished(QNetworkReply *pNetReply) {
// Once download is finished save data
m_DownloadData = pNetReply->readAll();
emit DownloadReady(m_DownloadData);
}
now i have the above class inside my dialog class like so
class Dialog : QObject {
public:
...
...
public slots:
void UpdateDownloadProgress(qint64,qint64)
private:
CDownloadManager m_Downloader;
}
I want my m_Downloader object to emite a downloadprogress(qint64,qint64) signals and catch them within my UpdateDownloadProgress(qint64,qint64) slot for my dialog