16 votes

Comment changer l'index dans l'OptionSelector immédiatement (sans animation) ?

Dans mon application, j'utilise un OptionSelector pour choisir dans une liste de stations de vélo. J'ai également un composant de carte avec des marqueurs de place pour chaque station.

Lorsque je touche un marqueur de lieu, le sélecteur d'option devient également l'indice de la station correspondante, car c'est une bonne ergonomie.

Ce qui n'est pas une bonne UX, c'est la façon dont l'OptionSelector réagit à ce changement d'indice, qui s'anime comme s'il avait été effleuré par le doigt de l'utilisateur. En d'autres termes, longtemps après que l'utilisateur a tapé sur le marqueur de carte et reçu toutes les informations dont il a besoin, l'OptionSelector continue de "tourner" en fonction de l'indice de la station.

Voici une vidéo démontrant ce comportement : https://www.youtube.com/watch?v=jXKWlAmNYsw

J'aimerais que cet OptionSelector change immédiatement d'indice, sans animation. Existe-t-il un moyen de faire cela ?

Voici comment je procède actuellement. Je suis plus qu'heureux d'être corrigé si c'est la mauvaise façon de procéder. J'utilise un WorkerScript (un thread QML, plus ou moins) pour faire des appels API. Lorsque ce WorkerScript revient, il déplace l'OptionSelector comme suit :

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

Toute aide et tout conseil sont les bienvenus - merci !

0voto

Nelson Reis Points 149

Vous pouvez voir une copie de l'OptionSelector qml aquí il utilise UbuntuNumberAnimation quand il n'est pas développé. Il n'y a pas d'option pour la désactiver et si cette fonctionnalité est nécessaire, vous devrez appliquer un correctif en amont et attendre un certain temps pour les nouvelles versions de la bibliothèque.

Vous pouvez cependant créer votre propre widget de sélecteur ouvert, supprimer la partie animation et veiller à le renommer pour l'utiliser dans votre code. Je recommande ce chemin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X