[C/C++/GTK]Barre de progression et boutons
Résolu
drazx974
Messages postés
50
Statut
Membre
-
drazx974 Messages postés 50 Statut Membre -
drazx974 Messages postés 50 Statut Membre -
Bonjour,
Je souhaiterais pouvoir garder la main sur mon interface pendant la boucle d'itération de la barre de progression.
Je programme en C/C++ avec l'API GTK+.
Dans le tuto c'est pourtant bien avec le gtk_main_iteration() et le gtk_grab_add/remove() qu'ils procèdent.
Peut-être que j'ai raté quelque chose ou qu'il y a une autre solution.
Je souhaiterais pouvoir garder la main sur mon interface pendant la boucle d'itération de la barre de progression.
Je programme en C/C++ avec l'API GTK+.
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(n->progress), 0.0); gtk_grab_add(n->bouton_annuler); while(true) { gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(n->progress), dFraction); gtk_main_iteration (); /** --------------- LE TRAITEMENTS -------------- **/ if(/* TRAITEMENT TERMINE */) { gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(n->progress), 1.0); gtk_main_iteration (); break; } } gtk_grab_remove(n->bouton_annuler);
Dans le tuto c'est pourtant bien avec le gtk_main_iteration() et le gtk_grab_add/remove() qu'ils procèdent.
Peut-être que j'ai raté quelque chose ou qu'il y a une autre solution.
A voir également:
- [C/C++/GTK]Barre de progression et boutons
- Windows 11 barre des taches a gauche - Guide
- A quoi servent les boutons de couleur sur une telecommande - Guide
- Barre de défilement - Guide
- Barré whatsapp - Guide
- Comment réinitialiser un téléphone avec les boutons - Guide
7 réponses
Je ne connait pas GTK, mais sauf si tu lance un thread c'est normal.
gtk_main_iteration le fait il ?
Si oui, il faut alors mettre un sleep dans ta boucle.
Si non, il faut en faire un, pour que la boucle s'exécute en parallèle du reste du code.
gtk_main_iteration le fait il ?
Si oui, il faut alors mettre un sleep dans ta boucle.
Si non, il faut en faire un, pour que la boucle s'exécute en parallèle du reste du code.
PS: Comment on change le titre du sujet ? J'aimerais le mettre en "[GTK/C]Problème barre de progression"
Je crois qu'on ne peux pas changer le titre.
Je pense que pour faire des thread, si GTK est similaire à QT, tu doit avoir des outils qui le font simplement.
J'utilise la bibliothèque C pthread pour les thread en C, elle est facile d'utilisation est bien documenté.
man pthread_create
Je pense que pour faire des thread, si GTK est similaire à QT, tu doit avoir des outils qui le font simplement.
J'utilise la bibliothèque C pthread pour les thread en C, elle est facile d'utilisation est bien documenté.
man pthread_create
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
je m'arrache les cheveux avec cette histoire.
ni la solution des tutos ni pthread n'a résolu le problème.
Les deux font exactement la même chose, je peux cliquer sur mon bouton mais la commande prend effet seulment après que ma barre de progression soit terminé.
Résultat rien n'a changé.
ni la solution des tutos ni pthread n'a résolu le problème.
Les deux font exactement la même chose, je peux cliquer sur mon bouton mais la commande prend effet seulment après que ma barre de progression soit terminé.
Résultat rien n'a changé.
Tu as peut être un sleep trop court.
as tu bien penser ton truc pour que les deux s'exécutent simultanément ?
As tu bien créé un thread détacher ?
as tu bien penser ton truc pour que les deux s'exécutent simultanément ?
As tu bien créé un thread détacher ?
J'ai trouvé la solution avec mon prof.
En fait ma fonction du bouton annuler qui porte le même nom contient l'appel à la fonction gtk_main_quit() qui ne s'éxécute pas pendant que la barre de progression se charge et attend qu'elle est terminé pour s'éxectuer.
Donc voilà en fait mon code était correcte mais je n'avais pas d'autre boutons avec callbacks pour pouvoir tester.
Se qu'il faut retenir c'est que certaines fonctions gtk ne s'éxectuterons PAS PENDANT une boucle qui charge la barre de progression, mais seulement quand elle se termine.
En fait ma fonction du bouton annuler qui porte le même nom contient l'appel à la fonction gtk_main_quit() qui ne s'éxécute pas pendant que la barre de progression se charge et attend qu'elle est terminé pour s'éxectuer.
Donc voilà en fait mon code était correcte mais je n'avais pas d'autre boutons avec callbacks pour pouvoir tester.
Se qu'il faut retenir c'est que certaines fonctions gtk ne s'éxectuterons PAS PENDANT une boucle qui charge la barre de progression, mais seulement quand elle se termine.