bonjour tout le monde
je continue doucement mon apprentissage de Qt et j'essaye de faire une petite application pour télécharger des notices de montage Lego
mais j'ai un problème seul le dernier élément de ma liste d'adresse est prise en compte et je ne comprends pas pourquoi
voici mon code
main.cpp
mainwindow.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 #include "mainwindow.h" #include <QApplication> int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); }
mainwindow.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include "filedownloader.h" QT_BEGIN_NAMESPACE namespace Ui { class MainWindow; } QT_END_NAMESPACE class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); ~MainWindow(); QString File; private slots: void on_pushButton_download_clicked(); void download(); private: Ui::MainWindow *ui; FileDownloader *m_pPdfCtrl; }; #endif // MAINWINDOW_H
filedownloader.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 #include "mainwindow.h" #include "./ui_mainwindow.h" #include <QUrl> #include "filedownloader.h" #include <QFile> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_pushButton_download_clicked() { QList<QString> references = {"6145884","6145887","4656079"}; QString baseUrlStr = "https://www.lego.com/cdn/product-assets/product.bi.core.pdf/"; for (int i=0; i<references.size(); i++) { QUrl pdfurl = baseUrlStr + references[i]+".pdf"; File = "C:\\notice_lego\\" + references[i] + ".pdf"; qDebug() << pdfurl; m_pPdfCtrl = new FileDownloader(pdfurl, this); connect(m_pPdfCtrl, SIGNAL (downloaded()), this, SLOT (download())); } } void MainWindow::download() { QByteArray pdf = m_pPdfCtrl->downloadedData(); qDebug() << File; QFile file (File); if (!file.open(QFile::WriteOnly)) { qDebug()<< "impossible d'ouvrir le fichier demandé"; } else { file.write(pdf); file.close(); } }
filedownloder.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef FILEDOWNLOADER_H #define FILEDOWNLOADER_H #include <QObject> #include <QByteArray> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> class FileDownloader : public QObject { Q_OBJECT public: explicit FileDownloader(QUrl pdfUrl, QObject *parent = 0); virtual ~FileDownloader(); QByteArray downloadedData() const; signals: void downloaded(); private slots: void fileDownloaded(QNetworkReply* pReply); private: QNetworkAccessManager m_WebCtrl; QByteArray m_DownloadedData; }; #endif // FILEDOWNLOADER_H
filedownload.h et filedownload.cpp proviennent d'ici https://wiki.qt.io/Download_Data_from_URL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef FILEDOWNLOADER_H #define FILEDOWNLOADER_H #include <QObject> #include <QByteArray> #include <QNetworkAccessManager> #include <QNetworkRequest> #include <QNetworkReply> class FileDownloader : public QObject { Q_OBJECT public: explicit FileDownloader(QUrl pdfUrl, QObject *parent = 0); virtual ~FileDownloader(); QByteArray downloadedData() const; signals: void downloaded(); private slots: void fileDownloaded(QNetworkReply* pReply); private: QNetworkAccessManager m_WebCtrl; QByteArray m_DownloadedData; }; #endif // FILEDOWNLOADER_H
Si vous avez des info a me donner j'en serai ravie .
Partager