我使用Glade构建了一个GTK GUI,这意味着我有一个* .glade文件,我可以使用我的应用程序。我已经能够获得与它们交互的小部件,但我对如何将信号处理程序连接到菜单条目一无所知。
我要连接的信号是您单击菜单项时发出的信号。就像在Web浏览器中一样,您可以转到文件,然后单击一个条目。
该事件的名称是什么,以及要调用的gtkmm函数是什么? 我很困惑我应该尝试与之交互的元素,是GtkMenu,GtkMenuShell ......?更好的是,我可以从Glade的界面上做到吗?
起初我认为事件是activate-current
所以我尝试使用逻辑连接到它的方法,就像你在按钮上的clicked
事件那样。
这是不起作用的代码,因为该方法不存在:
Gtk::MenuShell* help_menu;
p_builder->get_widget("helpMenu", help_menu);
help_menu->signal_activate_current().connect(sigc::ptr_fun(&on_help_menu_activate_current));
src / GUI.cpp:11:16:错误:'class Gtk :: MenuShell'没有名为'signal_activate_current'的成员 help_menu-> signal_activate_current()连接起来。(sigc :: ptr_fun(安培; on_help_menu_activate_current));
答案 0 :(得分:0)
GtkMenuShell 是一个抽象类,您可能正在寻找 GtkMenu 或 GtkMenuBar 。两者都实现 GtkMenuShell 。
菜单上的项目是 GtkMenuItem ,您可能希望这些项目中的“激活”信号。
MenuItem小部件和派生小部件是唯一有效的 孩子们的菜单。
它们的功能是正确处理突出显示,对齐,事件 和子菜单。
您可以通过Glade设置回调名称,然后通过GtkBuilder方法以编程方式连接处理程序。