C++ gtkmm与g_信号处理程序_块_by_func()等价的是什么?
我需要阻止我自己(间接)发出的信号 在C语言中,可以使用g_signal_handlers_block_by_func()和姐妹函数unblock < C++ > GTKMM中的什么?< /P> 我有一个gtkmm dlna播放器,它每秒向Gtk::HScale Widet发出已更改的信号,因为它(从外部)收到刚刚播放的歌曲发出的信号。然后我寻找一个位置,就是电流的位置,它使歌曲在瞬间倒退 我想阻止对seek的更改,因为我看到一个C程序使用g_signal_handlers_block_by_func实现了这一点。因为ptomato询问: 我从未意识到,connect方法有一个有价值的返回值: 如果你像这样连接信号:C++ gtkmm与g_信号处理程序_块_by_func()等价的是什么?,c++,c,gtkmm,C++,C,Gtkmm,我需要阻止我自己(间接)发出的信号 在C语言中,可以使用g_signal_handlers_block_by_func()和姐妹函数unblock < C++ > GTKMM中的什么?< /P> 我有一个gtkmm dlna播放器,它每秒向Gtk::HScale Widet发出已更改的信号,因为它(从外部)收到刚刚播放的歌曲发出的信号。然后我寻找一个位置,就是电流的位置,它使歌曲在瞬间倒退 我想阻止对seek的更改,因为我看到一个C程序使用g_signal_handlers_block_by_f
mywidget_connection = mywidget.signal_value_changed().connect(sigc::mem_fun(*this, &MyClass::on_value_changed ));
mywidget_connection.block();
mywidget.set_value(new_value);
mywidget_connection.unblock();
在我的情况下,有两种方法可以更改值:
1.)有人拉滑块:应该更新值并搜索
2.)计时器出现并告知新位置:应更新值,但不搜索
然后您可以按如下方式阻止/取消阻止:
mywidget_connection = mywidget.signal_value_changed().connect(sigc::mem_fun(*this, &MyClass::on_value_changed ));
mywidget_connection.block();
mywidget.set_value(new_value);
mywidget_connection.unblock();
这不会发出更改后的信号。我自己找到的:connect调用的返回值具有阻止/取消阻止方法。您可以将其作为答案发布,以回答您自己的问题!我想这正是我需要的!非常感谢您对您的情况和解决方案的清晰解释……但是,现在我再看一遍,它值得一提的是,返回对象的类型是,从C++的回调库中,通过*>代码