我正在使用Qt和Qml为嵌入式Linux触摸屏设备编写应用程序。
我需要实现30秒不活动后出现的锁定屏幕。
为此,我在C ++中实现了一个计时器,该计时器在超时后更改了程序的状态。
是否可以在用户每次触摸屏幕时在全局范围内刷新此计时器,这样我就不必start()
在程序的每个可触摸元素中都调用计时器的插槽了?
我也想刷新此计时器,即使用户触摸屏幕上没有按钮/交互元素的部分。
像这样的main.qml:
Rectangle {
id: mainRect
width: 800
height: 480
//something like this (oversimplified) pseudo code:
onGlobalUserTouch {
timers.startLockTimer()
}
//end pseudocode
Loader {
id: mainLoader
anchors.fill: parent
source: "FirstPage.qml"
Behavior on opacity {PropertyAnimation{duration:250}}
onLoaded: secondLoader.source = ""
}
states:[
State {
name:"SecondPage"
when: (mainCppClass.state == PanelStates.SECOND_PAGE)
PropertyChanges {
target: mainLoader
source: "SecondPage.qml"
}
}
]
}
我在网络上能找到的就是如何在iOS或Android中实现此功能。
如果mainRect是您的根组件,则可以在其MouseArea中启动计时器。
// touch area of your root component
MouseArea {
anchors.fill: parent
onClicked: {
timers.startLockTimer();
}
// child component
Rectangle {
color: "yellow"
x: 50; y : 50
width: 100; height: 100
}
}
这不会覆盖后代MouseAreas。因此,如果您触摸没有按钮/交互元素的区域,则将调用startLockTimer。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句