J'ai cherché une solution pour mon problème et rien ... J'utilise un QMovie avec une animation GIF dans un QLabel pour un statut de chargement, d'accord? C'est simple et j'ai appris dans ce lien: GIF animation in Qt, cela fonctionne parfaitement quand j'ouvre un menu, par exemple, que possède une étiquette et j'ai mis le QMovie dans un QLabel de ce menu. Mon problème est maintenant, j'ai fait une interface utilisateur spécifique pour le chargement de l'état, quand je sais que certaines interface utilisateur sera lente à ouvrir, je montrerais mon état de chargement UI et quand l'interface se termine pour ouvrir je fermerais mon état de chargement UI. Dans ce chargement de l'interface utilisateur j'ai mis un QMovie (animation GIF) et un QLabel simple écrit "Chargement ...", très simple, non? Buuuut, quand j'utilise cette interface utilisateur spécifique, le QMovie ne fonctionne pas. En fait, il ne reste pas en boucle ... Voir, quand j'utilise le QMovie dans l'interface utilisateur que j'ouvre, le QMovie reste en boucle.Problèmes d'utilisation de QMovie avec animation GIF dans un QLabel
Mon anglais n'est pas si bon, mais comprenez-vous mon problème? =/
J'utilise le même code du lien:
this->m_pMovie = new QMovie(":/ui/images/my_image_loading.gif");
this->m_pMovie->setScaledSize(QSize(50, 50));
this->ui->labelImageLoading->setMovie(this->m_pMovie);
this->m_pMovie->start();
Quelqu'un sait à ce sujet?
Merci ...
J'ai compris @Dave ... J'avais vraiment utilisé QApplication :: processEvents(), mais j'ai oublié d'écrire ici. Eh bien, en utilisant processEvents() methdos, mon QLabel avec QMovie est affiché mais l'animation reste statique. Mais maintenant je comprends pourquoi ... Parce que la nouvelle interface utilisateur que je suis l'ouverture et mon interface utilisateur de statut de chargement sont dans le même fil, thread GUI, non? Merci pour votre explication! Je vais chercher une autre solution pour cela, mais je crois qu'il ne sera pas possible d'utiliser mon GIF pour charger l'état, car l'autre problème est si je dois ouvrir un autre thread je ne peux pas peindre dans l'IU aussi ... –
Une solution consisterait à générer un tout nouveau processus, QProcess, qui lance une application "waiting ...". Ensuite, tuez le processus une fois l'interface utilisateur chargée. Ensuite, vous avez deux threads GUI (sur deux processus différents). Cela invite ses propres problèmes, bien sûr, et est un peu lourd. Mais cela pourrait fonctionner s'il n'y a aucun moyen de raccourcir le temps de chargement de l'interface principale. –