Bonjour,
Je rencontre sans doute un problème simple mais j'arrive pas à comprendre.
J'ai le code ci-dessous qui me permet d'aller chercher des infos de films sur internet (en l’occurrence une image), et je souhaiterais l'enregistrer sur le disque.
J'utilise un QNetworkAccessManager qui va chercher l'info sur internet. Une fois cela fait, j'inscris ces données dans un QFile.
t_picturePath contient alors "file:///H:/Filmotheque Qt/MyMediaLibraries/Compilation/poster/Titanic.jpg". Le dossier poster existe donc normalement ça devrait marcher mais j'ai systématiquement ce message: "QIODevice::write: device not open", provenant de la ligne " file->write(reply->readAll());".
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 void TheMovieDB::getPoster(const QString &pictureName, const QString &pictureUrl) { t_manager->disconnect(t_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(saveBackdrop(QNetworkReply *))); t_picturePath= "file:///"+QDir::currentPath()+"/poster/" + pictureName + ".jpg"; t_infosList["poster"]=t_picturePath; QString url="http://image.tmdb.org/t/p/w1920"+pictureUrl; QObject::connect(t_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(savePoster(QNetworkReply *))); t_manager->get(QNetworkRequest(QUrl(url))); } void TheMovieDB::savePoster(QNetworkReply *reply) { qDebug()<<reply->readAll(); QFile* file = new QFile; file->setFileName(t_picturePath); file->open(QIODevice::WriteOnly); file->write(reply->readAll()); file->close(); t_manager->disconnect(t_manager, SIGNAL(finished(QNetworkReply *)), this, SLOT(savePoster(QNetworkReply *))); emit dataRetrieved(); }
Lorsque j'imprime reply->readAll() dans qDebug pour voir ce qu'il contient, j'ai ça:
"????QIODevice::write: device not open" avec tous les points d'interrogation.
Merci de votre aide.
Cordialement
Partager