Bonjour
Voilà je reviens pour un petit problème de codage...
Voilà je fais une requête sur mon serveur et lui me renvoie un lien d'une image sur internet.
Donc je traite via SAX la réponse du serveur j'obtiens le lien de mon image plus des informations comme le titre, auteur, durée etc...
Mais c'est la que je bloc, je sais qu'il n'est pas possible d'afficher une image qui se trouve sur internet donc la seul façon c'est de refaire une requête pour qu'il télécharge l'image qu'il la place dans le dossier temporaire et ensuite je l'affiche avec les autres informations (titre, auteur...)
Mais je me demande comment passer toute la QList vu qu'à l'origine je n'avais pas d'image donc je traitais le fichier XML, créer un QList avec toutes les infos et je l'envoie en paramètre dans le slot d'affichage qui va afficher toutes les infos.
Mais comme il y a l'image maintenant je vais devoir passer la QList de slot en slot jusque celle d'affichage ?
Enfin je bloc dessus...
Voilà le code pour que ce soit un peu plus clair ^^
Merci
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75 void FenInfos::traitement_xml() { QList<QString> results; QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); QXmlStreamReader reader(reply->readAll()); reader.readNext(); [...] if(reader.name() == "titre") { QString Titre = reader.readElementText(); results.append(Titre); // voilà comment je rajoute dans le QList } [...] //affichage(results); Avant j'allais directement au slot affichage pour afficher les infos mais comme il faut re-telecharger l'image... image(results); } void FenInfos::image(const QList<QString> &infos) { // infos[9] j'ai pas encore trouvé comme le mettre dans QUrl si je le mets comme ça ça ne compile pas, ni avec un QString... QNetworkRequest url_requete(QUrl(infos[9])); QNetworkAccessManager *manager = new QNetworkAccessManager; QNetworkReply *reply = manager->get(url_requete); connect(reply, SIGNAL(error(QNetworkReply::NetworkError)), this, SLOT(messageErreur(QNetworkReply::NetworkError))); connect(reply, SIGNAL(finished()), this, SLOT(enregistrement_image(infos))); } void FenInfos::enregistrement_image(QList<QString> infos1) { QNetworkReply *reply = qobject_cast<QNetworkReply*>(sender()); QFile fichier_temp(QDir::tempPath()+"/"+QString("image_film.jpg")); fichier_temp.open(QIODevice::WriteOnly); fichier_temp.write(reply->readAll()); fichier_temp.close(); fichier_temp.deleteLater(); affichage(infos1); } void FenInfos::affichage(const QList<QString> &infos2) { if(infos.isEmpty()) { QMessageBox::information(this, "Erreur !", "Aucun film n'a été sélectionné, aucun résumé possible !"); } deleteLayout(frame_image->layout()); deleteLayout(frame_details->layout()); deleteLayout(frame_synopsis->layout()); frame_image->setFrameShape(QFrame::StyledPanel); QLabel *label_image = new QLabel(this); label_image->setPixmap(QPixmap(QDir::tempPath()+"/"+QString("image_film.jpg"))); QVBoxLayout *vbox_image = new QVBoxLayout; vbox_image->addWidget(label_image); frame_image->setLayout(vbox_image); frame_details->setFrameShape(QFrame::StyledPanel); QLabel *label_titre = new QLabel("Titre : "+infos2[0]); QLabel *label_date_sortie = new QLabel("Date sortie : "+infos2[1]); QVBoxLayout *vbox_details = new QVBoxLayout; vbox_details->addWidget(label_titre); vbox_details->addWidget(label_date_sortie); }
Partager