什么是gtkmm相当于g_signal_handlers_block_by_func()?

时间:2012-11-28 16:01:54

标签: c++ c gtkmm

我需要阻止自己(间接)自己发出的信号。

在C中,可以使用g_signal_handlers_block_by_func()和姐妹函数解锁。

我可以在C ++ gtkmm中使用什么?

我有一个gtkmm dlna播放器,它每秒都会将更改信号发送到Gtk :: HScale Widet,因为它(从外部)获得刚刚播放的歌曲的信号。然后我寻找的位置就是当前,它将歌曲设置为瞬间......

我想阻止我对搜索的更改,因为我看到一个C程序用g_signal_handlers_block_by_func来做。

1 个答案:

答案 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();

并且这不会发出改变的信号。