如何立即更改 OptionSelector 中的索引(无动画)?

如何立即更改 OptionSelector 中的索引(无动画)?

在我的应用中,我使用 OptionSelector 从自行车站列表中进行选择。我还有一个地图组件,其中有每个站点的地标。

当我点击一个地点标记时,它也会将 OptionSelector 更改为相应站点的索引,因为这是很好的用户体验。

用户体验不佳的地方在于 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.
         */
    }
}

任何帮助或见解都值得赞赏 - 欢呼!

答案1

您可以看到 OptionSelector qml 的副本这里它在未展开时使用 UbuntuNumberAnimation。没有关闭它的选项,如果需要该功能,您将不得不修补上游并等待一段时间才能获得新版本的库。

不过,您可以制作自己的开放选择器小部件,删除动画部分,并确保重命名它以便在代码中使用。我推荐这条路线。

相关内容