【发布时间】:2015-11-08 07:30:12
【问题描述】:
我有一个由子组件组成的 Qml 组件。加载(渲染)所有内容后,我想执行一些操作。
有没有办法找出所有组件何时加载?仅在根元素上使用 Component.onCompleted 事件是不够的,因为不能保证加载子元素。
问候,
【问题讨论】:
我有一个由子组件组成的 Qml 组件。加载(渲染)所有内容后,我想执行一些操作。
有没有办法找出所有组件何时加载?仅在根元素上使用 Component.onCompleted 事件是不够的,因为不能保证加载子元素。
问候,
【问题讨论】:
您应该可以使用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 即可工作;可以在场景“层次结构”中的任何级别使用它。缺点:
【讨论】: