Erreur : "QIODevice device not open"
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.
Code:
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();
} |
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());".
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