从我更改 QML Loader 的source或sourceComponent属性到视觉项目实际出现在屏幕上(被绘制)的那一刻,我如何测量经过的时间?
Loader {
id: _loader
source: "MyVisualItem.qml"
}
我已经尝试使用 statusChanged 和 Component.onCompleted 信号,但都不够准确 - 很容易看出实际时间要长得多。
从我更改 QML Loader 的source或sourceComponent属性到视觉项目实际出现在屏幕上(被绘制)的那一刻,我如何测量经过的时间?
Loader {
id: _loader
source: "MyVisualItem.qml"
}
我已经尝试使用 statusChanged 和 Component.onCompleted 信号,但都不够准确 - 很容易看出实际时间要长得多。
根据文档中的图表,frameSwapped()
您最好的选择是:
您需要在设置source
/之前sourceComponent
或之后直接连接到该信号。第一次调用它时,您可以检查在屏幕上渲染它所花费的时间。之后不要忘记断开它。:)
QML profiler 应该解决这个问题(例如,见这里),
加载器项本身可以实现源更改和加载之间的纯时间测量:
Loader.Ready - the QML source has been loaded
Loader.Loading - the QML source is currently being loaded
并加载信号:
This signal is emitted when the status becomes Loader.Ready, or on successful initial load.
The corresponding handler is onLoaded.
所以测量源更改发生和 onLoaded 调用之间的时间