我正在使用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中实现这一点 .
1 回答
如果mainRect是您的根组件,您可以在其MouseArea中启动计时器 .
这不会覆盖后代MouseAreas . 因此,如果触摸没有按钮/交互元素的区域,将调用startLockTimer .