确定 Qt 计时器触发事件​​是否是由于 triggeredOnStart 为真

Determine if a Qt timer trigger event is the one due to triggeredOnStart being true

onTriggered() 中,是否有一些方便的方法可以找出您被调用的原因是 triggeredOnStarttrue,而不是计时器的结果超时?

文档说

It is sometimes desirable to trigger immediately when the timer is started; for example, to establish an initial state.

但很明显,如果您真的可以说这是第一次,那么这将是最有用的,所以请进行设置。

这显然可以通过在某处设置一些状态变量并在 onTriggered 中更改它来手动完成,但这非常麻烦...

我认为 Qt 是简洁但非常有用的工具,尤其是 QML。所以你有能力使用现有设施做你想做的事。至于您的问题,您可以完全按照您所说的那样使用现有事件之一。

例如:

Timer {
    id: timer
    running: false
    interval: 1000
    triggeredOnStart: true
    onRunningChanged: {
        console.log(running)
    }
    onTriggered: {
        console.log("triggered")
    }

    Component.onCompleted: timer.running = true
}

输出:

qml: true
qml: triggered
qml: false
qml: triggered