QML-如何将操作附加到信号处理程序?

时间:2019-04-05 09:47:41

标签: qt qml qt5

我创建了一个自定义计时器,提供暂停功能和经过时间属性。触发后,elapsedTime将增加'interval'属性值。我已经对其进行了测试,并且效果很好。

// CustomTimer.qml
import QtQuick 2.0

Timer {
    property double elapsedTimeSec: 0.0

    interval: 100
    repeat: true

    onTriggered: elapsedTimeSec += interval/1000
}

我将它作为单独的QML文件添加到了现有项目中。现在,我希望将动作附加到我的onTriggered信号处理程序中,以交互和切换主应用程序中的内容。例如一些代码:

Rectangle {
    Slider { 
        id: slider
        value: 0.2
    }
    CustomTimer {
        onTriggered: slider.value += 0.1    
    }
}

在不删除内部onTriggered内部处理程序的情况下该怎么做(因为计时器处理需要这些处理程序)?

1 个答案:

答案 0 :(得分:1)

  

我该怎么做而不删除已经存在的动作,因为这些动作对于计时器过程是必需的?

您不必担心。两个信号处理程序分别(理论上)同时执行。他们共存。因此,在您的代码中,将同时执行onTriggered中的CustomTimer.qml处理程序和嵌套在Rectangle下的处理程序。

您关注的覆盖行为仅与属性有关。例如,下面的CustomTimer会将计时器的间隔从100更改为500。与时隙不同,该值会传播。

Rectangle {
    CustomTimer {
        interval: 500
    }
}