Qt QApplication :: commitData,Windows关闭,令人困惑的文档

时间:2012-02-13 08:04:13

标签: c++ windows qt

我对QApplication::commitData应该和不应该做什么感到困惑。这个名字意味着我应该只存储状态,文档说它不应该关闭应用程序。但是,默认实现确实会关闭所有窗口,从而关闭应用程序。此外,如果这不是检测Windows关闭的方法,我没有看到任何其他方式来告诉窗口确实正在关闭。

还有相关的saveState。函数名称的含义大致相同,文档也非常相似。

我应该如何正确检测系统何时关闭并保存状态并关闭我的应用程序? commitData确实是正确的方法,只是遭受了一个非常糟糕的名字和糟糕的文件?

2 个答案:

答案 0 :(得分:1)

在我检测应用程序关闭的实践中,我通常会连接到插槽void QCoreApplication::aboutToQuit ()。正如它在文件中所说:

  

如果您的应用程序必须进行最后一秒的清理,则该信号特别有用。请注意,在此状态下无法进行用户交互。

到目前为止,这对我来说非常有用

答案 1 :(得分:0)

commitData()和saveState()似乎是多余的。

但是documentation

  

此外,大多数会话管理员很可能在应用程序启动后立即请求保存状态。这允许会话管理器了解应用程序的重启策略。

也许这就解释了为什么'数据'和'状态'的概念是分开的。在初始调用期间,与用户交互不是用户友好的。

关闭应用程序的默认响应似乎是一个很好的设计,因为如果你不重新实现,那么最安全的做法是关闭应用程序(好像用户选择了Quit操作),这也应该是保存用户的数据。

操作系统是关闭还是只关闭会话?至于你的应用程序应该关注的是,它只是会话(从技术上讲,用户可以注销并且操作系统继续运行。)并且用户可能认为应用程序没有“关闭”,只是'暂停数据安全。'

还要考虑像iOS这样的移动平台,其中应用程序似乎永远存在。