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


16

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

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


Не могли бы вы дать нам достаточно кода, чтобы воспроизвести вашу проблему? Видео, конечно, полезно, но довольно сложно помочь вам без фрагмента кода для повторного использования (см. Sscce.org )
Сильвен Пино

Привет, Сильвен. Простите за опоздание. Вот файл QML, который вы можете использовать для тестирования. Просто создайте новый проект Ubuntu Simple UI и замените ваш основной файл QML следующим: pastebin.ubuntu.com/9534780
Аарон Хастингс

Ответы:


0

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.