Gtkmm - 在不关闭应用程序的情况下隐藏窗口

时间:2012-06-10 10:33:49

标签: c++ gtk gtkmm

如何隐藏顶层窗口而不关闭它?

NdmWindow是一个继承自Gtk :: Window的类。 我已将NdmWindow的实例添加到Gtk :: Application。

现在,我如何隐藏它而不是关闭它?

提前致谢..

3 个答案:

答案 0 :(得分:8)

根据this,行为是当隐藏窗口时,它将从Gtk::Application中删除,因此如果它是最后一个窗口,则应用程序退出。

如果您希望应用程序在没有显示窗口时继续运行,解决方案是调用hold()对象上的Gtk::Application以增加应用程序的引用计数。假设您在设置任何窗口之前执行此操作,并调用相应的release()作为退出逻辑的一部分。

答案 1 :(得分:4)

window-> hide ();

不要忘记查看Gtk::Window继承的类。

修改

我不知道,但我的建议是在显示下一个窗口后尝试hold(),然后release()

答案 2 :(得分:2)

这是一个有效且无法segfault的解决方案。 保存对Gtk::Application的引用,比如将其作为参数发送到您的主Window class并调用此var app,稍后您需要它,因为在某些情况下需要{{1} }将返回get_application()

在窗口调用的删除事件处理程序中

null

当您想要再次显示窗口时,请不要致电app->hold(); hide(); return true; ,因为它会使您的应用程序完全退出。只需在您的窗口对象上调用app->release()即可显示。