GTKmm Почему сигнал signal_hide() испускается неправильно?

У меня есть контейнер Gtk::Box (основной контроллер), а внутри него есть Gtk::Grid (главное меню). Я добавил сигнал в maincontroller.cpp следующим образом:

mainmenu->signal_hide().connect(
        sigc::mem_fun(this, &MainController::Elmozdulas)
        );

Когда я нажимаю кнопку в главном меню, я вызываю функцию hide(), которая работает правильно, после этого я ничего не вижу, но она не излучает сигнал, только если я закрываю окно. Почему так и как я могу это исправить?

Спасибо за ваши ответы заранее!


person ithuriel89    schedule 18.09.2014    source источник


Ответы (1)


Вместо этого вы можете рассмотреть возможность привязки к signal_unmap. Я думаю, что signal_hide вызывается, только если виджет скрыт, а не один из его родителей. Ни один из них не будет запущен, если скрытие действительно вызывается для дочернего элемента основного меню, а не для самого основного меню. В этом случае казалось бы, что главное меню было скрыто, но на самом деле все еще было бы видимым (и отображенным, и реализованным).

person Blake    schedule 01.04.2016