【问题标题】:Make application not quit even if Main window is closed即使主窗口关闭,应用程序也不会退出
【发布时间】:2019-08-21 05:38:11
【问题描述】:

即使主窗口关闭,我也希望应用程序在后台运行。

I checked this one 并尝试过,但是当我明确按下退出按钮时应用程序退出。即使我明确按下退出,我也希望应用程序在后台运行。

我试过了

QApplication qApp;
qApp.setQuitOnLastWindowClosed(false);

【问题讨论】:

  • 你有没有试过第二次拨打qApp.exec()?在 Windows 上,将代码放在 qApp.exec() 之后根本不是问题——我们在生产代码中这样做。关于其他平台 - 我还没有尝试过。顺便提一句。 qApp 是个不吉利的名字。我曾经意识到有一个宏qApp。我用#undef qApp 解决了这个问题,但收到了(真正的)专家的投诉,最后得到了别的东西...... ;-)
  • @Scheff 我的应用程序目前正在 Linux 上开发。但是您是否建议尝试一下?
  • 尝试一个最小的例子不会有什么坏处,可以吗? ;-) 我大致记得我已经回答了类似的问题。如果我只能找到这个答案...(将继续搜索。)
  • 我试过了,但没用。即使在这样做之后它也关闭了:(
  • 找到了。你可以试试这个示例:SO: Qt exit application and show another window 开始。如果我理解正确,您不需要第二个窗口。我不太确定如何在没有窗口的情况下运行QGUIApplication。但是,分离的子进程可能是一种替代解决方案。在另一个答案中,我表明它可以比从SO: QProcess that will outlive the parent for updating 开始的过程更长寿

标签: c++ qt


【解决方案1】:

我认为您最好尝试使用 setVisible(false) 隐藏应用程序的主 QWidget

之后,您需要通过setVisible(true) 再次打开主窗口(托盘菜单是我能想到的第一个选项)

【讨论】:

  • 是的。我使用托盘图标来取回应用程序实例,但我在点击事件函数结束时使用了关闭。我试过了,现在效果很好。
【解决方案2】:

同样使用多线程的守护线程的概念。即使程序执行或退出,线程也会继续运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    相关资源
    最近更新 更多