qml - 使用计时器禁用开关

时间:2017-04-12 20:12:18

标签: qt qml qt5

问题:我有一个开关需要在程序启动时禁用大约50秒,然后重新启用。

当我的计时器结束时,有某种方式告诉我它已经结束,所以我可以重新启用开关?或者有没有办法在不使用计时器的情况下执行此操作。

提前致谢!

 Timer {
        id: delaySwitch
        interval: 50000;
        running: true;
        repeat: false
        onTriggered: {
            mySwitch.enabled = false;
       }
    }

3 个答案:

答案 0 :(得分:2)

禁用您的开关并使用触发信号启用它。

Switch{
    id: mySwitch
    enabled: false
}

Timer {
    id: delaySwitch
    interval: 50000;
    running: true;
    repeat: false
    onTriggered: {
        mySwitch.enabled = true;
    }
}

答案 1 :(得分:1)

您可以以更具说明性的方式替代地执行此操作:

Switch {
    id: mySwitch
    enabled: !delaySwitch.running
}

Timer {
    id: delaySwitch
    interval: 50000
    running: true
}

答案 2 :(得分:1)

您也可以将其作为自毁Timer

Switch {
    property Timer t: timer.createObject(this)
    enabled: !t
}

Component {
    id: timer
    Timer {
        interval: 50000
        running: true
        onTriggered: destroy()
    }
}
但是,不要问我表演的表现。 也许,如果只使用一次,ComponentSwitch with property t的新类将消耗更多内存,而不是通过销毁Timer来释放内存。也许,如果你使用这个Switch吨次,它可能会为你节省一些时间。但是afaik,Timer是一个非常小的对象。