Gtkmm - 隐藏窗口而不关闭应用程序

3

如何隐藏一个toplevel窗口而不关闭它?

NdmWindow是从Gtk :: Window继承的类。我已经将NdmWindow实例添加到了Gtk :: Application。

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

提前致谢。

3个回答

8
根据这里的说法,当一个窗口被隐藏时,它会被从Gtk::Application中移除,因此如果它是最后一个窗口,则应用将退出。
如果您希望应用程序在没有任何窗口显示时继续运行,则解决方法是在Gtk::Application对象上调用hold()以增加应用程序的引用计数。假定您在设置任何窗口之前执行此操作,并作为退出逻辑的一部分调用相应的release()

4

window->hide();

请注意查看Gtk::Window继承的类。

编辑

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


我能找到的仅有两个函数是hide()和set_visible()。它们都继承自Gtk::Widget,且都会退出应用程序。 - Dipesh
1
这就是为什么你绝不能忘记报告你已经尝试过的内容的原因;-) 你的问题是:“如何隐藏一个窗口而不关闭它?”如果你不说你知道hide()并且已经尝试过了,那么人们会认为你需要hide(),只是你没有阅读文档。我不知道你真正问题的答案,但我有一个猜测-请参见编辑。 - ptomato
1
非常感谢。我正在寻找的是“按住”和“释放”。 - Dipesh

2
这里有一个可行的解决方案,不会导致“segfault”错误。请将 Gtk::Application 的引用保存下来,将其作为参数传递给您的主窗口类,并将其称为 var app。稍后您需要它,因为在某些情况下,get_application() 将返回 null
在您的窗口的删除事件处理程序中调用以下代码:
app->hold();
hide();
return true;

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接