Dans mon programme, j'ai besoin de télécharger un fichier et je suis tombé sur cet article:
http://www.java2s.com/code/cpp/qt/downloadfromurl.htm p>
Ce code fonctionne, mais cela ne rentre pas dans mon programme, donc je re-codé. Je n'ai pas tout achevé mais j'ai les bases codées. Cependant, lorsque je le teste, il apparaît avec une fenêtre de rapport d'erreur d'envoi. P>
jusqu'à présent, c'est mon code: p>
qtdownload.h p> Je suis aussi nouveau à QT afin que des conseils soient appréciés. P> p>
3 Réponses :
Vous avez besoin QcoreApplication pour démarrer la boucle d'événement pour qt4.
Quelque chose comme ça devrait fonctionner (non testé): edit :: nouvelle version p> J'ai trouvé des problèmes: P> Voici la version modifiée: p> qtdownload.h strong>: p> qtownload. CPP strong>: p> main.cpp strong>: p>
DATA CODE> INTÉRIED
QTDOWLOAD :: Downloadfinished CODE>, qui ne devrait pas être fait, il est manipulé par qt, de sorte qu'il soit supprimé deux fois. Li >
réponse code> 3 fois. li>
ol>
Expliqué dans ma réponse. Principalement, il s'agit de "Qt les gère"
Merci pour les réponses et les conseils, je le testerai maintenant et post-retour
Le code oneOfone écrit fonctionne. Juste une question montrant mon inexpérience, à la ligne 10, il quitte l'application une fois téléchargée, maintenant si je l'ai commentée, cela passerait-il à la ligne suivante avant de terminer le téléchargement que je pense que cela le fait et si oui, comment puis-je le faire Attendez que terminé ait été émis? De plus, si j'utilise pour écrire des morceaux de données de manière inconsciente si les données étaient importantes (dans ce programme, les fichiers ne seront que 2 Mo) de quel signal serais-je utilisé. J'ai regardé sur les documents Qt mais je n'ai pas trouvé de signal réel qui gère de recevoir des morceaux à la fois? Je vous remercie
Dans Main.CPP, vous devez d'abord vous connecter, puis télécharger uniquement. En général, n'accordez pas un nouveau fil avant que vos connexions soient configurées.
Répondre code> avec null code> dans votre constructeur. LI>
- Vous devez connecter
Répondre code> après avoir été créé ( Répondre = manager.get (...) code>), pas à l'intérieur de votre constructeur. li>
-
qnetworkreply code> n'est jamais supprimé par qNetworkManager code> comme Docs disent : li>
ul>
Ne supprimez pas l'objet de réponse dans l'emplacement connecté à ce signal. Utilisez Supprimer (). P>
blockQuote>
Vous ne devez donc pas appeler supprimer sur qnetworkreply code> dans terminé code> emplacement. p>
- in
terminé code> Réglage de l'emplacement DATA code> à 0 code> ne définit que la valeur du paramètre sur 0 code>, pas votre membre de la classe Répondre code>. C'est une ligne de code inutile. Vous devez définir votre membre réponse code> sur null code> à la place. Li>
ul>
Vous devez également envisager d'écrire dans un fichier chaque fois que vous obtenez des données de données, en tant que fichier entier en mémoire tampon dans votre cas en cours. Cela peut entraîner une énorme utilisation de la mémoire de votre logiciel lorsque le fichier à l'URL pointue est grand. P>
Comme vous l'avez demandé, certains commentaires généraux:
if (reply != 0) delete reply;