Qt 表单的生命周期(或 Windows)

Life Cycle of Qt Forms (or Windows)

如何控制 QML 表单的生命周期(我的意思是 windows)?我说的是 Android 上的 onCreate、onResume、onPause 等方法或 iOS 上的视图生命周期。我可以在 Android、iOS、Windows 10 移动设备、桌面设备等上处理 QML 表单的生命周期吗?

Qt Quick (QML) 应用程序的设计不同于 Android 应用程序。视图和 ButtonText 等对象之间没有区别。每个具有图形表示的 QML 对象都继承 Item 并且可以定义 Component.onCompletedComponent.onDestruction 功能。一旦对象被创建和销毁,它们就会被执行。如果您还需要 pause 信号,我建议在您创建的每个视图中创建函数 pause()resume() 并创建一个将管理视图的对象 - 创建,销毁, 暂停和恢复它们。 请注意,您需要自己处理视图和状态之间的转换。此外,由于您可以创建自己的 QML 对象,因此值得考虑创建一个视图模板,然后只继承它。

这将适用于您部署应用程序的每个系统。

如果您有更多问题,需要示例等,请考虑编辑问题或发表评论。


我想再次感谢 BaCaRoZzo 提供的有用提示。我将它们添加到此答案中。


我创建了一个示例项目,试图模仿 Android 应用程序生命周期。这将适用于每个 OS。这只是一个例子,但我认为类似的方法可以用于发布源代码。但是,首先您需要了解 QML 的性质。这是已经由其他一些进程管理的高级语言。与Java相差甚远。例如,查看 docs 关于后台进程使用的状态的片段:

A Qt Quick application should not usually handle this state at the QML level. Instead, you should unload the entire UI and reload the QML files whenever the application becomes active again.

所以如果我是你,我只会在检测到应用程序进入后台时才保存敏感数据。无需尝试取消视图等。这将是不必要的艰苦奋斗,因为 QML 不是为此而设计的。如果 OS 需要更多内存,则让您的应用程序被终止。

您可以找到示例项目 here。如果你愿意,你可以使用它。它包含评论,让您更好地了解正在发生的事情。