2012-06-10 3 views

ответ

4

window->hide();

Не забудьте посмотреть на классы, которые Gtk::Window наследуется от.

EDIT

я не знаю, но мое предложение попробовать hold(), а затем release() после отображения следующего окна.

+0

Только две функции, которые я мог найти, - hide() и set_visible(). Оба унаследованы от Gtk :: Widget и оба выхода из приложения. – Dipesh

+1

Вот почему вы никогда не должны сообщать о том, что вы уже пробовали ;-) В вашем вопросе говорится: _Как я скрываю окно, не закрывая его? _ Если вы не говорите, что знаете о 'hide()' и имеете попробовал это уже, тогда люди предполагают, что вам нужно 'hide()', и вы просто не читали документацию. Я не знаю ответа на ваш реальный вопрос, но у меня есть предположение - см. Править. – ptomato

+1

Большое спасибо .. Удерживайте и отпустите те, которые я ищу. – Dipesh

8

Согласно this, поведение заключается в том, что когда окно скрыто, оно удаляется из Gtk::Application, и поэтому, если это последнее окно, приложение завершает работу.

Если вы хотите, чтобы ваше приложение продолжало работать, когда окна не отображаются, решение должно вызвать hold() на вашем объекте Gtk::Application, чтобы увеличить счетчик ссылок приложения. Предположительно, вы делаете это перед настройкой любых окон и вызываете соответствующие release() как часть вашей логики выхода.

+1

Держите и отпускайте работы great.Thanks. – Dipesh

2

Вот решение, которое работает и не работает segfault. Сохраните ссылку на Gtk::Application, скажите, отправьте его как свой номер на ваш основной номер Window class и позвоните по номеру var app, вам понадобится позже, это необходимо, потому что в некоторых случаях get_application() вернется null.

В удаления обработчика событий вашего окна вызова

app->hold(); 
hide(); 
return true; 

Не называйте app->release(), когда вы хотите, чтобы ваше окно появляется снова, так как это сделает ваш выход приложения полностью. Просто позвоните set_visible() на свой оконный объект, и он появится.

 Смежные вопросы

  • Нет связанных вопросов^_^