qt - QML - 如何将动作附加到信号处理程序?
问题描述
我创建了一个自定义计时器,提供暂停功能和经过时间属性。触发时,elapsedTime
按 'interval' 属性量递增。我已经对其进行了测试,并且效果很好。
// CustomTimer.qml
import QtQuick 2.0
Timer {
property double elapsedTimeSec: 0.0
interval: 100
repeat: true
onTriggered: elapsedTimeSec += interval/1000
}
我将它作为单独的 QML 文件添加到现有项目中。现在我希望将动作附加到我的onTriggered
信号处理程序中,以便在我的主应用程序中进行交互和切换。一个小代码例如:
Rectangle {
Slider {
id: slider
value: 0.2
}
CustomTimer {
onTriggered: slider.value += 0.1
}
}
如何在不删除已经存在的内部onTriggered
处理程序的情况下做到这一点(因为这些对于计时器进程是必需的)?
解决方案
我怎样才能在不删除已经存在的动作的情况下做到这一点,因为这些对于计时器过程是必要的?
你不应该担心。两个信号处理程序分别同时执行(理论上)。它们共存。因此,在您的代码中,将执行其中的onTriggered
处理程序CustomTimer.qml
和嵌套在其中的处理程序。Rectangle
您关心的那种覆盖行为只发生在属性中。例如,CustomTimer
下面会将计时器的间隔从 100 更改为 500。与插槽不同,该值是传播的。
Rectangle {
CustomTimer {
interval: 500
}
}
推荐阅读
- python - 使用 python 事件并与 c++ 交互
- vba - PowerPoint VBA 形状计时持续时间
- docker - 如何将 Docker 容器暴露给 Web
- hyperledger-fabric - Retrieving data from blockchain with random id's
- sql - SQL:检查约束以强制使用任意长度的正则表达式?
- git - 每次在 pythonanywhere 中克隆或拉取存储库时,我是否必须登录 github 帐户?
- c# - 在 Linux 上使用 .net 核心创建的 Zip 文件缺少读取权限
- sql - 根据范围将总和拆分为类别
- groovy - 如何在 Groovy 中将目录从一个位置复制到另一个位置
- syntax - 奇怪的语法错误'错误:预期是`,`或`:`之一,发现`else`'