我需要阻止自己(间接)自己发出的信号。
在C中,可以使用g_signal_handlers_block_by_func()和姐妹函数解锁。
我可以在C ++ gtkmm中使用什么?
我有一个gtkmm dlna播放器,它每秒都会将更改信号发送到Gtk :: HScale Widet,因为它(从外部)获得刚刚播放的歌曲的信号。然后我寻找的位置就是当前,它将歌曲设置为瞬间......
我想阻止我对搜索的更改,因为我看到一个C程序用g_signal_handlers_block_by_func来做。
答案 0 :(得分:2)
因为ptomato问道:
我从未意识到,connect方法有一个有价值的返回值:
所以如果你连接这样的信号:
mywidget_connection = mywidget.signal_value_changed().connect(sigc::mem_fun(*this, &MyClass::on_value_changed ));
在我的情况下,我有两种方法来改变价值: 1.)有人拉一个滑块:应该更新值并寻找 2.)计时器出现并告诉新位置:应该更新值而不是寻找。
然后你可以像这样阻止/取消阻止:
mywidget_connection.block();
mywidget.set_value(new_value);
mywidget_connection.unblock();
并且这不会发出改变的信号。