Як змінити індекс в 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 )
Sylvain Pineau

Привіт, Сільвейн. Вибачення за затримку. Ось файл QML, який ви можете використовувати для тестування. Просто створіть новий проект простого інтерфейсу Ubuntu Simple та замініть свій основний файл QML таким: pastebin.ubuntu.com/9534780
Аарон Гастінгс

Відповіді:


0

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

Ви можете створити власний віджет із відкритим селектором, видалити анімаційну частину та переконайтесь, що ви перейменували її для використання у своєму коді. Я рекомендую цей маршрут.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.