Qt窗体(或Windows)的生命周期



如何控制QML表单的生命周期(我指的是窗口)?我说的是安卓系统上的onCreate、onResume、onPause等方法或iOS上视图的生命周期。我可以在Android、iOS、Windows 10 Mobile、台式机等平台上处理QML表格的生命周期吗。?

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

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

如果你有更多的问题,需要举例等,可以考虑编辑问题或留下评论。


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


我创建了一个示例项目,试图模仿Android应用程序的生命周期。这将适用于每个操作系统。这只是一个例子,但我认为在发布源代码中也可以使用类似的方法。但是,首先您需要了解QML的性质。这是一种高级语言,已经由其他进程管理。它与Java大不相同。例如,看看关于后台进程使用的状态的文档片段:

Qt Quick应用程序通常不应在QML处理此状态数量相反,您应该卸载整个UI并重新加载QML文件。

所以,如果我是你,我只会在检测到应用程序将进入后台时保存敏感数据。不需要尝试和卸载视图等。这将是不必要的艰苦斗争,因为QML不是为此而设计的。相反,如果操作系统需要更多内存,就让你的应用程序被杀死。

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