在我的应用中,我使用 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。没有关闭它的选项,如果需要该功能,您将不得不修补上游并等待一段时间才能获得新版本的库。
不过,您可以制作自己的开放选择器小部件,删除动画部分,并确保重命名它以便在代码中使用。我推荐这条路线。