【发布时间】:2012-06-10 10:33:49
【问题描述】:
如何隐藏顶层窗口而不关闭它?
NdmWindow 是一个继承自 Gtk::Window 的类。 我已将 NdmWindow 的实例添加到 Gtk::Application。
现在,我如何隐藏它而不是关闭它?
提前谢谢..
【问题讨论】:
如何隐藏顶层窗口而不关闭它?
NdmWindow 是一个继承自 Gtk::Window 的类。 我已将 NdmWindow 的实例添加到 Gtk::Application。
现在,我如何隐藏它而不是关闭它?
提前谢谢..
【问题讨论】:
根据this,行为是当一个窗口被隐藏时,它会从Gtk::Application中删除,所以如果它是最后一个窗口,应用程序就会退出。
如果您希望您的应用程序在没有窗口显示时继续运行,解决方案是在您的Gtk::Application 对象上调用hold() 以增加应用程序的引用计数。大概您在设置任何窗口之前执行此操作,并调用相应的release() 作为退出逻辑的一部分。
【讨论】:
【讨论】:
hide() 并且已经尝试过,那么人们会认为您需要hide() 而您只是没有阅读文档。我不知道你真正问题的答案,但我有一个猜测 - 请参阅编辑。
这是一个有效但无效的解决方案segfault。
保存对Gtk::Application 的引用,例如将其作为参数发送到您的主Window class 并调用此var app,稍后您将需要它,因为在某些情况下get_application() 将返回null。
在您的窗口调用的删除事件处理程序中
app->hold();
hide();
return true;
当你想让你的窗口再次出现时不要调用app->release(),因为它会让你的应用程序完全退出。只需在窗口对象上调用set_visible(),它就会显示出来。
【讨论】: