渲染页面/加载所有组件时的事件
Posted
技术标签:
【中文标题】渲染页面/加载所有组件时的事件【英文标题】:Event when page is rendered/all components are loaded 【发布时间】:2015-11-08 07:30:12 【问题描述】:我有一个由子组件组成的 Qml 组件。加载(渲染)所有内容后,我想执行一些操作。
有没有办法找出所有组件何时加载?仅在根元素上使用 Component.onCompleted
事件是不够的,因为不能保证加载子元素。
问候,
【问题讨论】:
【参考方案1】:您应该可以使用QQuickWindow
的afterSynchronizing()
信号来实现:
import QtQuick 2.2
import QtQuick.Controls 1.1
import QtQuick.Layouts 1.1
ApplicationWindow
visible: true
width: 1280
height: 700
property bool initialised: false
onAfterSynchronizing:
if (!initialised)
print("initialising...");
// stuff...
initialised = true;
优点:
您可以免费获得。缺点:
您只能在QQuickWindow
衍生产品上使用它。
另一种方法是使用Loader
;特别是它的loaded()
信号:
Loader
source: "MyComponent.qml"
onLoaded:
// stuff...
优点:
对于可能需要维护您的代码的任何人来说,这是一个更清晰的替代方案。 无需Window
即可工作;可以在场景“层次结构”中的任何级别使用它。
缺点:
带有一点开销。如果组件经常在低级别(如按钮)构建,则可能值得进行分析以查看它是否对性能产生负面影响。如果不是,则可以忽略不计。【讨论】:
以上是关于渲染页面/加载所有组件时的事件的主要内容,如果未能解决你的问题,请参考以下文章