gpt4 book ai didi

c++ - 每次用户触摸屏幕时如何在 Qml 中执行操作?

转载 作者:太空狗 更新时间:2023-10-29 23:16:28 24 4
gpt4 key购买 nike

我正在使用 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 将被调用。

关于c++ - 每次用户触摸屏幕时如何在 Qml 中执行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23804396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com