Как изменить индекс в OptionSelector сразу (без анимации)? [закрыто]

В моем приложении я использую 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.
         */
    }
}

Любая помощь или понимание приветствуются - ура!

16
задан 8 March 2016 в 22:01

1 ответ

Вы видите копию OptionSelector qml здесь , он использует UbuntuNumberAnimation, когда он не расширен. Нет никакой опции для выключения его и если функция требуется, Вы оказываетесь перед необходимостью исправлять в восходящем направлении и ожидать некоторое время новых версий библиотеки.

Вы могли сделать свой собственный открытый селекторный виджет, хотя, удалите часть анимации и удостоверьтесь, что Вы переименовываете его для использования в Вашем коде. Я рекомендую этот маршрут.

0
ответ дан 23 November 2019 в 02:37

Другие вопросы по тегам:

Похожие вопросы: