Bonjour a tous
Je souhaiterais ouvrir une fenêtre en plus de ma fenêtre principal. (Fenêtre d'options, avec onglets etc....).
J'ai une fenetre principal :
Fonction Main qui ouvre le formulaire principal:
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 int main(int argc,char **argv) { // Declaration du formulaire cls_FrmPrincipal FrmPrincipal; // Initialisation de GTK gtk_init(&argc,&argv); // Affichage du formulaire FrmPrincipal.show(); // Démarrage de la boucle évènementielle gtk_main(); return RETOK; }
Fonction Show du formulaire principal:
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 /* ---------------------------------------------------- show ----------------------------------------------------- */ void cls_FrmPrincipal::show() { // Creation de la fenetre this->pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); [...] // Connexion du signal "destroy" g_signal_connect(G_OBJECT(this->pWindow), "destroy", G_CALLBACK(OnDestroy), NULL); // Dessine la page drawPage(this); // Affichage de la fenetre gtk_widget_show_all(this->pWindow); }
J'ai un bouton dans mon formulaire qui me permet d'ouvrir mon deuxième formulaire.
Voici la fonction de callback qui me permet d'ouvrir mon deuxième formulaire:
J'ai un bouton dans mon deuxième formulaire qui me permet de le fermer.
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 void cb_evt_Click_CmdRecDirect(GtkWidget *p_widget, gpointer user_data) { // On recupere le clsParent en parametre (Classe du Formulaire Principal) cls_FrmPrincipal *clsParent; clsParent = (cls_FrmPrincipal *) user_data; // Déclaration du Deuxieme formulaire cls_FrmRecDirect FrmRecDirect(clsParent); // Affichage du deuxieme formulaire (Modal) FrmRecDirect.show(); // Demarrage de la boucle évènementielle gtk_main(); }
Voici la fonction de callback qui me permet de fermer mon deuxième formulaire:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void cb_evt_Click_CmdAnnuler(GtkWidget *p_widget, gpointer user_data) { cls_FrmRecDirect *clsParent; // On recupere le clsParent en parametre clsParent = (cls_FrmRecDirect *) user_data; gtk_widget_destroy(clsParent->pWindow); gtk_main_quit(); }
J'ai un problème de mémoire et je ne sais pas si ca vient de là!
Voila donc ma question:
Est-ce la bonne méthode pour ouvrir un deuxième formulaire (en modal, sans bordure, en définissant les mêmes paramètres que la fenêtre principal). Deux boucles gtk_main(); dans un même programme ne pose pas de problèmes?
Beaucoup d'exemples utilisent des gtk_dialog_new() ou des extensions avec boutons. Mais je ne comprend pas (j'ai regardé vite fait) comment faire des formulaires plus complexe que saisir un nom, de les mettre en modals, de les personnalisés.
Si quelqu'un pouvait me conseiller, me guider... vers une façon propre de faire!
Merci à tous
Partager