我用 glade 制作我的界面。效果很好。 我编写了一个很小的主函数,它调用 gtkbuilder 并在 glade 文件中呈现所有内容。
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");
效果更好。然后我得到我的小部件
Gtk::Button *sf = 0;
builder->get_widget("button", sf);
现在呢?我发现连接信号处理程序的每个示例都不是由 gtkbuilder 构建的。如果您实例化自己的类来表示/处理/呈现按钮,则很容易将信号处理程序连接到它,但我使用的是 gtkbuilder,但我不知道如何编写一个可以附加到我的小部件的函数,因为我不是创建按钮对象的人,所以 gtkbuilder 是。
我是否让 gtkbutton 的子类编写我的函数然后指向它?但是我的类没有被 gtkbuilder 实例化。
我只是不明白。帮忙?
最佳答案
您没有遗漏任何明显的东西。似乎 gtkmm 没有提供 gtk_builder_connect_signals()
函数的 C++ 版本,这是你在 C 中的做法。我做了一些谷歌搜索,但我无法弄清楚为什么他们会遗漏它。
您可以像这样直接访问 C 函数:
Glib::RefPtr<Gtk::Builder> builder = Gtk::Builder::create_from_file("dsg.glade", "mainwindow");
gtk_builder_connect_signals(builder->gobj(), callback_data);
关于gtk - 我在 glade gtkbuilder 和连接信号中遗漏了一些明显的东西。帮助?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4098636/