我正在尝试使用timer
来激活屏幕保护程序。
在闲置10秒钟后,我的屏幕保护程序可以按预期显示,但是由于某种原因,在另外20个屏幕保护程序中它会重置并再次变得不可见。
这似乎是无限期发生的,我只希望屏幕保护程序重置,并且在单击MouseArea
后不再可见,我的代码如下所示:
Timer {
id: screenSaverTimer
interval: 3000
running: true
repeat: true
onTriggered: screenSaver.visible = true
}
onVisibleChanged: {
if(visible) {
screenSaver.visible = false
screenSaverTimer.restart()
}
}
ImageScreenSaver {
id: screensaver
z:99
Image {
source: "assets/screensaver.png"
MouseArea {
anchors.fill:parent
onClicked: {
screenSaver.visible = false; screenSaverTimer.restart()
}
}
}
我的问题是
如何确保我的screensaver.visible
仅在单击鼠标区域时才设为false
-不受计时器的影响
定时器的onTriggered
信号发射每一次定时器完成,并且在您的情况下,每次将可见性设置为true
-表示您的onVisibleChanged
正在按照if(visible)
进行选择]将screenSaver
设置为false
我建议像这样扩展该调用以检查其当前可见性
Timer {
id: screenSaverTimer
interval: 10000
running: true
repeat: true
onTriggered: myFunc()
}
function myFunc() {
if(screenSaver.visible === false) {
screenSaver.visible = true
screenSaverTimer.restart()
} else {
screenSaverTimer.restart()
//Can be left blank to ensure nothing happens if screenSaver.visible !== false
}
}
ImageScreenSaver {
id: screensaver
z:99
Image {
source: "assets/screensaver.png"
MouseArea {
anchors.fill:parent
onClicked: {
screenSaver.visible = false; screenSaverTimer.restart()
}
}
}