让我们考虑用户点击t
毫秒0 < t < 5000
。我们想以图形方式显示还剩多少时间。我们假设用户必须再次在t
内单击该按钮。
property int startTime
property int fps: 40
property int t: 1000 // for example
Button
{
id: btn
text: "Click me!"
onClicked:
{
text = "Click again!"
startTime = new Date().getTime()
timer.restart()
}
}
Timer
{
id: timer
interval: 1000 / fps
onTriggered:
{
var progress = (new Date().getTime() - startTime) / t
if (progress < 1)
{
pb.value = progress
restart()
}
else
{
pb.value = 1
btn.text = "Try again"
}
}
}
ProgressBar
{
id: pb
value: 0
}
我只担心性能影响。由于t
可能较低,因此用户界面应始终保持可访问状态并快速响应。如果不是,用户可以在设定的时间内单击按钮但“丢失”,因为应用程序不会响应点击。
我应该担心性能下降吗?有没有选择可以避免它?我希望我的应用程序也可以在低端设备上运行。 我在Android上使用Qt
答案 0 :(得分:1)
如果fps
合理,那么我认为性能不会成为问题,用户界面仍会保持响应。
无论如何,我认为使用动画获得相同的结果更加优雅 ...您可以使用NumberAnimation
来不断更新进度条的值,然后想要开始计算剩余时间时启动动画...