Skip to content

注意

Timer 并不是树中实际可见的元素,因此它没有 xywidthheight 等通用属性。它也不会在布局中占用空间,不能有任何子元素,也不能被继承。

此示例展示了一个每秒从 10 倒数到 0 的计时器:

slint
import { Button } from "std-widgets.slint";export component Example inherits Window {    property <int> value: 10;    timer := Timer {        interval: 1s;        running: true;        triggered() => {            value -= 1;            if (value == 0) {                self.running = false;            }        }    }    HorizontalLayout {        Text { text: value; }        Button {            text: "Reset";            clicked() => { value = 10; timer.running = true; }        }    }}

使用 Timer 伪元素以给定间隔调度回调。 仅当 running 属性设置为 true 时,计时器才会运行。要停止或启动计时器,将该属性设置为 truefalse。 它也可以设置为绑定表达式。 当已经在运行时,如果 interval 属性更改,计时器将重新启动。

警告

默认情况下,Timer 始终运行 running: true。这可能会导致持续的 CPU 使用和电量消耗,因此当你不想让计时器运行时,请确保将 running 设置为 false

slint
property <int> count: 0;Timer {    interval: 8s; // every 8 seconds the timer will activate (tick)    triggered() => { // The triggered callback activates every time the timer ticks        if count >= 5 {            self.running = false; // stop the timer after 5 ticks        }        count += 1;    }}

属性

interval

duration 默认:0ms

计时器 tick 之间的间隔。此属性是必需的。

slint
Timer {    property <int> count: 0;    interval: 250ms;    triggered() => {        debug("count is:", count);        count += 1;    }}

running

bool 默认:true

如果计时器正在运行,则为 true

slint
Timer {    property <int> count: 0;    interval: 250ms;    running: false; // timer is not running    triggered() => {        debug("count is:", count);    }}

回调

triggered()

每当计时器 tick(每个 interval)时调用。

slint
Timer {    property <int> count: 0;    interval: 250ms;    triggered() => {        debug("count is:", count);    }}

函数

start()

启动计时器(等同于将 running 设置为 true)。

stop()

停止计时器(等同于将 running 设置为 false)。

restart()

如果计时器先前已启动,则重新启动它。

基于 MIT 协议发布