我正在使用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中实现这一点。
答案 0 :(得分:0)
如果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。