QML元素 - Timer

QML 中的 Timer 组件用于在指定时间间隔后触发事件,支持单次或重复执行。以下是它的核心用法和示例:


1. 基本属性

  • interval: 时间间隔(毫秒),默认 1000(1秒)
  • repeat: 是否重复执行(true/false),默认 false
  • running: 是否自动启动(true/false),默认 false
  • triggeredOnStart: 启动时立即触发一次(true/false),默认 false

2. 基本用法示例

import QtQuick 2.15

Item {
    Timer {
        id: myTimer
        interval: 1000    // 1秒触发一次
        repeat: true      // 重复执行
        running: true     // 自动启动
        onTriggered: {
            console.log("Timer triggered at", new Date());
        }
    }
}

3. 手动控制定时器

通过按钮控制定时器的启动/停止:

Row {
    spacing: 10

    Button {
        text: "Start"
        onClicked: myTimer.start()
    }

    Button {
        text: "Stop"
        onClicked: myTimer.stop()
    }
}

Timer {
    id: myTimer
    interval: 500
    onTriggered: console.log("Tick")
}

4. 单次延迟执行

Timer {
    id: delayTimer
    interval: 2000
    onTriggered: {
        console.log("2秒后执行");
    }
}

// 启动定时器(例如在组件加载时)
Component.onCompleted: delayTimer.start()

5. 动态修改属性

Timer {
    id: dynamicTimer
    interval: 1000
    running: true
    onTriggered: {
        interval = Math.random() * 2000; // 动态修改时间间隔
        console.log("Next trigger in", interval, "ms");
    }
}

6. 与动画结合使用

Rectangle {
    width: 100; height: 100
    color: "red"

    Timer {
        interval: 1000
        running: true
        repeat: true
        onTriggered: {
            parent.color = Qt.rgba(Math.random(), Math.random(), Math.random(), 1);
        }
    }
}

7. 常见用途

  • 定期更新 UI 数据
  • 实现轮询(如检查网络状态)
  • 延迟执行操作(如页面跳转)
  • 控制动画/效果的节奏

注意事项

  • 避免在 onTriggered 中执行耗时操作(可能导致 UI 卡顿)。
  • 如果需要在后台线程执行任务,应使用 WorkerScript 而非 Timer。
  • 定时器的精度取决于系统负载,不适用于高精度计时场景。

通过灵活组合这些特性,可以轻松实现 QML 中的定时任务需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

“不靠谱”的深度体验派

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值