【发布时间】:2015-08-10 22:09:56
【问题描述】:
我有一些属性具有请求重新绘制画布的更改处理程序。这工作得相当好,但我想消除信号,因为用户只能看到有限数量的刷新,并且一些数据项可能会非常频繁地更改。这会导致用户无法看到更多刷新,并降低 UI 的响应速度。
我已经研究过在 javascript 中对信号进行去抖动(网上有关于如何做到这一点的示例)并将其与 QML 相关联,但我还没有弄清楚如何让 QML 和 javascript 一起工作还没有。
我希望看到类似以下的内容:
function rateLimitedRefresh(){
// magic to limit to 30 frames per second
canvas.requestPaint()
}
onValueChanged: {
rateLimitedRefresh();
}
仅在画布上调用 requestPaint 方法,每秒最多调用 30 次。
我使用了对 Mertanian 答案的修改。此修改在每帧级别而不是每秒级别强制执行帧速率限制。
property var limitStartTime: new Date()
function rateLimitedRefresh(){
// magic to limit to 30 frames per second
var now = new Date();
if (now - limitStartTime >= 32) {
limitStartTime = now
canvas.requestPaint()
}
}
【问题讨论】:
标签: qml filtering signals-slots