如何隐藏顶层窗口而不关闭它?
NdmWindow是一个继承自Gtk :: Window的类。 我已将NdmWindow的实例添加到Gtk :: Application。
现在,我如何隐藏它而不是关闭它?
提前致谢..
答案 0 :(得分:8)
根据this,行为是当隐藏窗口时,它将从Gtk::Application
中删除,因此如果它是最后一个窗口,则应用程序退出。
如果您希望应用程序在没有显示窗口时继续运行,解决方案是调用hold()
对象上的Gtk::Application
以增加应用程序的引用计数。假设您在设置任何窗口之前执行此操作,并调用相应的release()
作为退出逻辑的一部分。
答案 1 :(得分:4)
答案 2 :(得分:2)
这是一个有效且无法segfault
的解决方案。
保存对Gtk::Application
的引用,比如将其作为参数发送到您的主Window class
并调用此var app
,稍后您需要它,因为在某些情况下需要{{1} }将返回get_application()
。
在窗口调用的删除事件处理程序中
null
当您想要再次显示窗口时,请不要致电app->hold();
hide();
return true;
,因为它会使您的应用程序完全退出。只需在您的窗口对象上调用app->release()
即可显示。