【发布时间】:2022-10-18 20:10:42
【问题描述】:
我想每 5 毫秒更新一次进度条,以使进度条看起来平滑。我创建了计时器和进度条。问题是我的进度条看起来像是从 100-80-60-40-20 “跳跃”,一点也不顺畅。
import QtQuick
import QtQuick.Controls 6.3
ApplicationWindow {
id: root
visible: true
minimumWidth: 840
minimumHeight: 600
property real prgVal1:100
Timer{
id:timProgress
interval: 5
running: true
repeat: true
onTriggered: {
updateProgress()
}
}
function updateProgress(){
if(prgVal1>0){
prgVal1 = prgVal1-0.1
}
else{
prgVal1 = 100
}
}
ProgressBar{
id: progressBar1
visible: true
width: 120
height: 40
x: 20
y: 50
value: prgVal1
from:0
to: 100
}
}
*/
任何人都可以帮助我吗? 可以在这里看到 Gif:https://ibb.co/Wk4w2bn
【问题讨论】:
-
ProgressBar无法自动识别最大值和最小值。要设置范围,请使用from和to属性;默认情况下,它介于0和1. (例如,from: 0; to: 100)。 -
谢谢!现在 proressbar 有效,但是:它看起来像这样跳跃:100/80/60/40/20/0 。没有平滑的步骤。我为 prgVal1 添加了 console.log,它真的从 100 到 0 一个一个地变化。它应该每 10 ms 更新一次进度条。
-
我相信10ms数量非常少;它等于100赫兹(100 帧/秒)。将值更改为16或者33以获得更人眼可观察的帧速率。
-
不幸的是,这不是一个解决方案,我改成 10 fps(100 毫秒),但它的跳跃仍然大致相同。也许在更改进度值之后调用一些函数来更新所有 QML 可视组件?
-
我觉得它相当平滑,但您可以尝试将值减小 0.1 步。 (例如
prgVal1 -= 0.1| Preview gif)