Je fais mon interface avec glade. Fonctionne très bien. J'écris une minuscule petite fonction principale qui appelle gtkbuilder et qui restitue tout dans le fichier glade.Il me manque quelque chose d'évident avec glade gtkbuilder et les signaux de connexion. Aidez-moi?
Gtk::Main kit(num, opts);
// Load the GtkBuilder file and instantiate its widgets:
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("dsg.glade", "mainwindow");
Fonctionne encore mieux. Puis je reçois mon widget
Gtk::Button *sf = 0;
builder->get_widget("button", sf);
Maintenant quoi? Chaque exemple que j'ai trouvé pour connecter un gestionnaire de signal n'est pas construit par gtkbuilder. Si vous instanciez votre propre classe pour représenter/gérer/rendre un bouton, il est facile de connecter un gestionnaire de signal, mais j'utilise gtkbuilder et je ne vois pas comment écrire une fonction que je peux ensuite attacher à mon widget, puisque je n'étais pas celui qui créait l'objet bouton, gtkbuilder l'était. Est-ce que je fais une sous-classe de gtkbutton écrire ma fonction puis pointer vers cela? Mais ma classe n'est pas instanciée par gtkbuilder.
Je ne comprends tout simplement pas. Aidez-moi?
Merci bien. Content de savoir que je ne deviens pas fou. – stu
Il semble que ce que vous avez à faire est de le connecter à une fonction autonome, comme dans une fonction qui ne fait pas partie d'une classe. Je peux voir pourquoi l'attacher à une classe serait un problème, en fait c'est le problème exact que j'ai, vous n'avez pas de code source pour l'objet qui recevrait le rappel. – stu
Et j'imagine que le fait de le lier à une fonction C++ serait un PIA. J'imagine que je pourrais appeler gtk_builder_connect_signals() si je faisais tous mes gestionnaires de signaux extern "C" {} – stu