我正在尝试将加速器连接到 Gtk::ToggleToolButton,不幸的是,“切换”信号不是“可激活的”,因此您必须连接到“点击”,如下所示:
togglebutton->add_accelerator("clicked", ...etc..)
这有效,并触发任何连接到 signal_clicked() 的处理程序,但它实际上并没有改变按钮的外观,或触发“切换”信号。基本上触发“点击”不会改变按钮的“活动”状态。
因此,显而易见的解决方案是从“clicked”回调中调用 toolbutton->set_active(true/false)。但是现在的问题是 set_active 本身会触发“clicked”信号和“toggled”信号,因此您最终会陷入无限循环:
accelerator -> clicked handler -> set_active() -> clicked handler -> set_active()
所以,我的问题是,如何向 ToggleToolButton 添加加速器,从而导致切换按钮的预期行为?