什么是 gtkmm 等价于 g_signal_handlers_block_by_func()

What is the gtkmm equivalent to g_signal_handlers_block_by_func()?

本文关键字:block by func handlers signal gtkmm 等价于 什么      更新时间:2023-10-16

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

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

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

我有一个gtkmm dlna播放器,它每秒向Gtk::HScale Widet发出更改后的信号,因为它(从外部)获得刚刚播放的歌曲的信号。然后我寻求的位置,就在当前的位置,这让歌曲倒退了一瞬间......

我想阻止我的搜索更改,因为我看到 C 程序用 g_signal_handlers_block_by_func 做到了这一点。

因为Ptomato问:

我从来没有意识到,连接方法有一个有价值的返回值:

因此,如果您像这样连接信号:

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

这不会发出更改的信号。

相关文章: