Ouvrir plusieurs fenêtres dans une application
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:
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:
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:
Code:
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();
} |
J'ai un bouton dans mon deuxième formulaire qui me permet de le fermer.
Voici la fonction de callback qui me permet de fermer mon deuxième formulaire:
Code:
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