2011-03-22 6 views
1

J'utilise un délégué pour afficher une donnée de modèle d'article standard dans une liste en qt. Le modèle a un QIcon et des chaînes d'en-tête et de sous-en-tête.chargement QICon de façon asynchrone dans QListview

Maintenant, je veux charger des images distantes via http dans la liste de manière asynchrone. Comment puis-je faire cela?

J'ai déjà lancé le listview.

Répondre

1

Il existe de nombreuses manières différentes de résoudre votre tâche, et la bonne réponse dépend de la façon dont vous construisez votre interface utilisateur et de ses objectifs, ainsi que du fonctionnement des autres composants de votre application. Néanmoins, voici une idée que vous considériez:

  1. Créer un modèle pour votre listview, une supposition chaque élément de votre modèle doit avoir un lien vers l'icône image \ que vous allez télécharger.

  2. Utilisez QNetworkAccessManager pour vous connecter à de manière asynchrone télécharger l'image via http. Exemple vous pouvez le faire ici: qt networkManager get

  3. Une fois qu'une image est gestionnaire de signal « finished » du téléchargement gestionnaire de réseau sera appelée, il vous faut mettre à jour un enregistrement dans votre modèle correspondant au lien téléchargé avec le pointeur l'objet image.

  4. Pour la liste, vous pouvez utiliser un item delegate pour dessiner un espace réservé vide (ou juste une image par défaut) pour les enregistrements qui n'ont pas encore d'icône téléchargée;

  5. Assurez-vous de la synchronisation de votre modèle (QMutexQSemaphoreQWaitCondition)

espérons que cette aide, qui concerne

+0

je pensais qu'il y aurait une sorte de fonctionnalité préparée à cet effet. Ouais je l'ai fait, et ça marche maintenant .. :) –

Questions connexes