Qt Q应用程序:commitData,Windows关闭,令人困惑的文档

Qt QApplication::commitData, Windows shutdown, confusing documentation

本文关键字:文档 Windows 应用程序 commitData Qt 关闭      更新时间:2023-10-16

我很困惑在QApplication::commitData中应该做什么和不应该做什么。这个名称意味着我应该只存储状态,而文档说它不应该关闭应用程序。但是,默认实现确实关闭了所有窗口,从而关闭了应用程序。此外,如果这不是检测窗口关闭的方法,我看不出有任何其他方法可以判断窗口确实正在关闭。

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

我应该如何正确检测系统何时关闭,并保存我的状态和关闭我的应用程序?commitData真的是正确的方式吗?只是名字很差,文档不好?

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

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

到目前为止,这对我来说很好。

commitData()和saveState()可能显得多余。

但是文件表示

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

也许这就解释了为什么"数据"answers"状态"的概念是分开的。在最初的通话过程中,与用户进行交互是不友好的。

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

操作系统正在关闭,还是仅关闭会话?就你的应用程序而言,这只是会话(因为从技术上讲,用户可能正在注销,操作系统继续运行。)用户可能会认为应用程序没有"关闭",只是"在数据安全的情况下暂停"

还可以考虑像iOS这样的移动平台,在那里应用程序似乎永远运行。