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

16

В моем приложении я использую OptionSelector для выбора из списка велосипедных станций. У меня также есть компонент карты с отметками места для каждой станции.

Когда я нажимаю метку места, он также изменяет OptionSelector на индекс соответствующей станции, так как это хороший UX.

Что плохой UX - это то, как OptionSelector реагирует на это изменение индекса, которое анимируется, как если бы оно было перемещено пальцем пользователя. Другими словами, спустя много времени после того, как пользователь нажал маркер карты и получил всю необходимую им информацию, OptionSelector все еще «вращается» по индексу станции.

Вот видео, демонстрирующее это поведение: Ссылка

Я бы хотел, чтобы этот 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.
         */
    }
}

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

    
задан Aaron Hastings 08.12.2014 в 19:20
источник

1 ответ

0

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

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

    
ответ дан Martin Owens -doctormo- 03.06.2016 в 21:01