确定 Qt 计时器触发事件是否是由于 triggeredOnStart 为真
Determine if a Qt timer trigger event is the one due to triggeredOnStart being true
在 onTriggered()
中,是否有一些方便的方法可以找出您被调用的原因是 triggeredOnStart
是 true
,而不是计时器的结果超时?
文档说
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
在 onTriggered()
中,是否有一些方便的方法可以找出您被调用的原因是 triggeredOnStart
是 true
,而不是计时器的结果超时?
文档说
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