You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QML中第一个Timer循环超时后启动第二个Timer的实现方法

问题根因

你的代码存在3个核心问题,直接导致第一个倒计时到0后逻辑卡住:

  • 两个Timer初始都设置running: true,程序启动时两个定时器会同时运行,根本没有按顺序执行
  • 两个Timer都开启了repeat: true,第一个计数器归0后你没有手动停止s1,它会持续每秒触发,反复给文本赋值0,直接覆盖s2的输出
  • 你之前直接写if语句报错,本质是onTriggered信号处理器内写多行/分支逻辑时,没有用大括号把代码块包起来,不是QML不支持if语法。
修正后可运行代码
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.1

Item {
    id: root
    width: 610
    height: 548

    property int counter1: 10
    property int counter2: 5

    ColumnLayout{
        anchors.centerIn:parent
        spacing: 20 // 原代码写spacing: parent会导致布局间距异常,改为固定数值即可

        Timer {
            id:s1
            interval: 1000
            running: true // 初始仅启动第一个定时器
            repeat: true
            onTriggered: {
                if(counter1 > 0) {
                    counter1--
                    timeLabel.text = counter1
                    // 第一个倒计时归0时,停掉当前定时器,启动第二个
                    if(counter1 === 0) {
                        s1.stop()
                        s2.start()
                    }
                }
            }
        }
        Timer {
            id:s2
            interval: 1000
            running: false // 初始保持关闭,等s1执行完成后再启动
            repeat: true
            onTriggered: {
                if(counter2 > 0) {
                    counter2--
                    timeLabel.text = counter2
                    // 第二个倒计时归0时直接停表
                    if(counter2 === 0) {
                        s2.stop()
                    }
                }
            }
        }
        Label{
            id: timeLabel
            color: "#FFFFFF"
            font.pixelSize: 100
            font.family: "Cherry"
            text: counter1 // 初始化文本,避免启动时标签空白
        }
    }
}
实现要点
  • 信号处理器语法要求:不管是Timer的onTriggered还是其他控件的信号回调,只要内部写超过1行逻辑,必须在外层加{}包裹所有代码,这是你之前写if触发报错的核心原因
  • 顺序执行的定时器不要初始全部设为运行状态,前一个定时器执行到结束节点时,手动调用下一个定时器的start()方法即可
  • 开启repeat: true的循环定时器,完成自身任务后一定要手动调用stop()或者设置running: false停止,否则会持续循环触发,干扰后续逻辑。

内容的提问来源于stack exchange,提问作者Nab Win

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 05:57:37