Bonjour,
Pour un programme j'utilise la vue éclaté (à la manière de gimp)
Le problème c'est que j'aimerai savoir si il y a une fonction qui ferme gtk.
Merci d'avance
Bonjour,
Pour un programme j'utilise la vue éclaté (à la manière de gimp)
Le problème c'est que j'aimerai savoir si il y a une fonction qui ferme gtk.
Merci d'avance
Bonjour,
gtk_main_quit![]()
Sa ne ferme que la fenêtre courante. Je veux que sa ferme toute les fenetres
Alors tu as plusieurs thread. A toi d'arrêter chaque boucle que tu as lancé.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
De quelle manière?
L'allocation dynamique des widget des fenêtres: je pense que c'est un peu lourd et gtk_main_quit ne prend pas d'argument.
Une autre solution?
Normalement tu peux ouvrir autant de fenêtre que tu veux sur la boucle principale de GTK+. Si cette boucle est interrompu pour une raison ou une autre TOUTES les fenêtres se ferment. C'est pour celal que gege2061 ta donné la solution.
Maintenant si en exécutant gtk_main_quit(); tu as encore des fenêtres ouvertes, c'est que tu as créé d'autres boucles en plus de la principale. Ce n'est peut être pas très judicieux, d'autant que finalement si il faut ça ne sert à rien.
Regarde ton code de ce côté là pour voir comment tu utilises les boucles.
Utilisation de Glade avec Gtk+
Code::Blocks et Gtk+ sous Windows
Programmation orientée objet avec Gtk+ v3
- N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk
J'utilise une autre boucle car sinon la nouvelle fenêtre créer ne prend pas en compte les events (avec du cairo qui contient des events)
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 GtkWidget* gui_main_init(void) { ... g_signal_connect(G_OBJECT(pMenuItem), "activate", G_CALLBACK(gui_draw_init), (GtkWidget*) window); ... } GtkWidget* gui_draw_init(GtkWidget* widget, gpointer data) { GtkWidget *window; window = gtk_window_new (GTK_WINDOW_TOPLEVEL); ... render_init(window); ... } void render_init (GtkWidget *window) GtkWidget *canvas; SelectionInfo selection = {FALSE, 0, 0, 0, 0}; ... gtk_container_add (GTK_CONTAINER (window), canvas); gtk_widget_show_all (window); gtk_main (); }
En quittant la boucle au préalable et en la recréent, cela fonctionne.
Mais j'aimerai savoir si il y a une solution plus propre?
Partager