Что такое gtkmm, эквивалентный g_signal_handlers_block_by_func ()?

Мне нужно заблокировать сигналы, которые я излучаю (косвенно) сам.

В C можно использовать g_signal_handlers_block_by_func () и разблокировать сестринскую функцию.

Что я могу использовать в C ++ GTKM?

У меня есть плеер GTKM DLNA, который испускает изменено Сигнал к Gtk :: HScale Widet каждую секунду, потому что он получает (извне) сигнал, что песня, которая только что играет. И тогда я стремлюсь к позиции, которая как раз там, где текущая, которая отбросила песню на долю секунды …

Я хотел бы заблокировать изменения при поиске, потому что я видел, что программа на C сделала это с помощью g_signal_handlers_block_by_func.

1

Решение

так как ptomato спросил:

Я никогда не осознавал, что метод connect имеет ценное возвращаемое значение:

так что если вы подключите сигналы так:

mywidget_connection = mywidget.signal_value_changed().connect(sigc::mem_fun(*this, &MyClass::on_value_changed ));

В моей ситуации у меня есть 2 способа изменить значение:
1.) кто-то тянет ползунок: следует обновить значение и искать
2.) приходит таймер и сообщает новую позицию: должен обновить значение, но не искать.

тогда вы можете заблокировать / разблокировать, как это:

mywidget_connection.block();
mywidget.set_value(new_value);
mywidget_connection.unblock();

и это не испускает измененный сигнал.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]