gtkmm / glade - 将信号处理程序连接到MenuShell

时间:2017-07-17 06:40:31

标签: c++ menu glade gtkmm

我使用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));

1 个答案:

答案 0 :(得分:0)

GtkMenuShell 是一个抽象类,您可能正在寻找 GtkMenu GtkMenuBar 。两者都实现 GtkMenuShell

菜单上的项目是 GtkMenuItem ,您可能希望这些项目中的“激活”信号。

  

MenuItem小部件和派生小部件是唯一有效的   孩子们的菜单。

     

它们的功能是正确处理突出显示,对齐,事件   和子菜单。

您可以通过Glade设置回调名称,然后通过GtkBuilder方法以编程方式连接处理程序。