Задача:
Написать консольную утилиту которая получает файл по сети, обрабатывает его неким образом и завершается.
Реализация:
main.cpp:
#include <QCoreApplication>
#include <check.h>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
check *cck = new check();
if (cck->can_check){
cck->do_check();
}
QObject::connect(cck, SIGNAL(done()), &a, SLOT(quit()));
return a.exec();
}
check.cpp:
#include "check.h"
check::check(QObject *parent) :
QObject(parent)
db = QSqlDatabase::addDatabase("AVAILABLE_DRIVER");
can_check = db.open();
if (!can_check) emit done();
}
void check::do_check(){
fd = new FileDownloader(QUrl("URL_TO_FILE"));
connect(fd, SIGNAL(downloaded()), SLOT(pars_file()));
}
void check::pars_file(){
QString file_content = QString(fd->downloadedData());
}
нашёл где-то
filedownloader.cpp:
#include "filedownloader.h"
#include "filedownloader.h"
FileDownloader::FileDownloader(QUrl fileUrl, QObject *parent) :
QObject(parent)
{
connect(&m_WebCtrl, SIGNAL(finished(QNetworkReply*)),
SLOT(fileDownloaded(QNetworkReply*)));
QNetworkRequest request(fileUrl);
m_WebCtrl.get(request);
}
void FileDownloader::fileDownloaded(QNetworkReply* pReply)
{
m_DownloadedData = pReply->readAll();
pReply->deleteLater();
emit downloaded();
}
QByteArray FileDownloader::downloadedData() const
{
return m_DownloadedData;
}
Так работает.
Не знаю что, но что-то мне не нравится.
А вам?