В настоящее время я работаю в проекте с Qt QML, и у меня есть тип, у которого есть свойство (содержит объект JavaScript), и его ссылка постоянно меняется.
Что я хочу сделать, это обнаружитьизменения в этом свойстве и сравнить с кэшированным.
Я рассмотрел Привязка свойства Qt , но функция обратного вызова выполняется до того, как изменение произойдет, и свойство получает значениевозврат обратного вызова. Я хочу, чтобы после этого что-то было выполнено (изменение свойства), потому что мне нужно обновить свойство dataset
перед тем, как отправлять сигналы (в коде сигналы излучаются с отражением типа, в обратном вызове forEach
).
Что я сделал до сих пор:
Item {
id: root
property var dataset
Component.onCompleted: {
dataset = Qt.binding(function(){
return MediaWatcherHelper.formatDataset(internals.metadata);
// I want this code to execute after the binding occurs, but I obviously can't execute things after the return.
MediaWatcherHelper.detectChanges(root.dataset, internals.cache)
.forEach(it => root[`${it}Change`](dataset[it]));
internals.cache = root.dataset; // And update the cache
});
}
signal trackIdChange(string trackId)
signal albumChange(string album)
signal artistChange(var artist)
signal titleChange(string title)
signal urlChange(url url)
}