3

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

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

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

提前致谢..

4

3 回答 3

8

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

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

于 2012-06-10T20:48:27.247 回答
4

window->hide();

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

编辑

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

于 2012-06-10T13:21:25.950 回答
2

这是一个有效但无效的解决方案segfault。保存对 的引用Gtk::Application,例如将其作为参数发送到您的 mainWindow class并调用var app它,稍后您将需要它,因为在某些情况下get_application()会返回它,所以需要它null

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

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

app->release()当你想让你的窗口再次显示时不要调用,因为它会使你的应用程序完全退出。只需调用set_visible()您的窗口对象,它就会显示出来。

于 2012-09-08T13:21:28.320 回答