¿Cómo cambiar el índice en OptionSelector inmediatamente (sin animación)? [cerrado]


16

En mi aplicación, uso un OptionSelector para elegir de una lista de estaciones de bicicletas. También tengo un componente de mapa con marcadores de posición para cada estación.

Cuando toco un marcador de posición, también cambia el OptionSelector al índice de la estación correspondiente, ya que esta es una buena experiencia de usuario.

Lo que no es bueno UX es cómo el OptionSelector responde a este cambio de índice, que se anima a sí mismo como si hubiera sido movido por el dedo del usuario. En otras palabras, mucho después de que el usuario haya tocado el marcador del mapa y recibido toda la información que necesita, el OptionSelector sigue "girando" al índice de la estación.

Aquí hay un video que demuestra este comportamiento: https://www.youtube.com/watch?v=jXKWlAmNYsw

Me gustaría que este OptionSelector simplemente cambie su índice de inmediato, sin animación. ¿Hay alguna forma de hacer esto?

Así es como hago las cosas actualmente. Estoy más que feliz de ser corregido si esta es la forma incorrecta de hacerlo. Utilizo un WorkerScript (un hilo QML, más o menos) para hacer llamadas a la API. Cuando este WorkerScript regresa, mueve el OptionSelector de la siguiente manera:

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.
         */
    }
}

Cualquier ayuda o idea apreciada - ¡salud!


¿Podría darnos el código suficiente para reproducir su problema? El video es útil, por supuesto, pero es bastante difícil ayudarlo sin un fragmento de código para reutilizar (Ver sscce.org )
Sylvain Pineau

Hola Sylvain Perdón por el retraso. Aquí hay un archivo QML que puede usar para probar. Simplemente cree un nuevo proyecto de interfaz de usuario simple de Ubuntu y reemplace su archivo QML principal con esto: pastebin.ubuntu.com/9534780
Aaron Hastings

Respuestas:


0

Puede ver una copia del qml OptionSelector aquí , usa UbuntuNumberAnimation cuando no está expandido. No hay ninguna opción para desactivarlo y si se requiere la función, tendrá que parchear en sentido ascendente y esperar un tiempo para obtener nuevas versiones de la biblioteca.

Sin embargo, puede hacer su propio widget de selector abierto, eliminar la parte de animación y asegurarse de cambiarle el nombre para usarlo en su código. Recomiendo esta ruta

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.