Как измерить время, необходимое для появления элемента QML на экране с момента его загрузки? - PullRequest
0 голосов
/ 16 декабря 2018

Как я могу измерить время, прошедшее с того момента, как я изменил source или sourceComponent свойство QML Loader до момента, когда визуальный элемент фактически появился на экране (был нарисован)?

Loader {
    id: _loader
    source: "MyVisualItem.qml"
}

Я уже пытался использовать сигналы statusChanged и Component.onCompleted, но ни один из них не является достаточно точным - легко увидеть, что фактическое время значительно больше.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Профилировщик QML должен решить эту проблему (например, см. здесь ),

Измерение чистого времени между сменой источника и загрузкой может быть достигнуто самим элементом loader :

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

0 голосов
/ 17 декабря 2018

Согласно диаграмме в документации , frameSwapped() - ваша лучшая ставка:

enter image description here

Вы захотитеподключиться к этому сигналу перед установкой source / sourceComponent или непосредственно после.При первом вызове вы можете проверить, сколько времени потребовалось, чтобы отобразить его на экране.Не забудьте отключить его потом.:)

...