В моем приложении я использую OptionSelector, чтобы выбрать из списка велосипедных станций. У меня также есть компонент карты с метками для каждой станции.
Когда я нажимаю метку, он также меняет OptionSelector на индекс соответствующей станции, так как это хороший UX.
Что плохо, UX - это то, как OptionSelector реагирует на это изменение индекса, которое само себя оживляет, как если бы оно было щелкнуто пальцем пользователя. Другими словами, еще долго после того, как пользователь нажал на маркер карты и получил всю необходимую ему информацию, OptionSelector все еще «крутится» до индекса станции.
Вот видео, демонстрирующее это поведение: https://www.youtube.com/watch?v=jXKWlAmNYsw
Я бы хотел, чтобы этот OptionSelector немедленно изменил свой индекс без анимации. Есть ли способ сделать это?
Вот как я сейчас делаю вещи. Я более чем счастлив, если меня поправят, если это неправильный путь. Я использую WorkerScript (поток QML, более или менее) для выполнения вызовов API. Когда этот WorkerScript возвращается, он перемещает OptionSelector следующим образом:
WorkerScript {
id: queryStationsWorker
source: "../js/getstations.js"
onMessage: {
[...]
// Move the OptionSelector to the corresponding station's index.
stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)
/*
* For the sake of clarity:
*
* getLastStationIndex() is a function which just returns an integer.
* lastStation is a U1DB database used for state saving.
* stationsModel is a model containing all of the stations.
*/
}
}
Любая помощь или понимание приветствуется - ура!
источник
Ответы:
Вы можете увидеть копию OptionSelector qml, здесь она использует UbuntuNumberAnimation, когда она не развернута. Нет никакой возможности отключить его, и если функция требуется, вам нужно будет установить апстрим и немного подождать новых версий библиотеки.
Вы можете создать свой собственный виджет с открытым селектором, удалить часть анимации и убедиться, что вы переименовали его для использования в вашем коде. Я рекомендую этот маршрут.
источник