QML学习笔记(十九)QML的附加信号处理器

前言

本节我们将学习附加信号处理器。实际上,我们此前的学习中已经接触过了,Component就是其中之一。

一、什么是"附加信号处理器"(Attached Signal Handler)

  1. 它不是 由当前元素自身发出的信号,而是由另一个"附加类型"(Component、Keys、ListView ...)附加到当前元素后,再向当前元素发出的信号。
  2. 语法模板:
    <AttachingType>.on<SignalName>: { ... }
    例子:
    Component.onCompleted: { }
    Keys.onReturnPressed: { }
  3. 附加类型由 Qt 在解析 QML 时自动创建并绑定,我们只需写出处理器即可使用。

二、Component 这一附加类型提供的常用信号

  • completed() ------ 组件实例化完成后触发(类似构造函数)
  • destruction() ------ 组件开始销毁 前触发(类似析构函数)
    使用位置:任何继承自 Item 的对象体内,写
    Component.onCompleted: { }
    Component.onDestruction: { }

三、代码实现

我们在上一节的工程中实现一下这两个信号的处理器。

cpp 复制代码
    Component.onCompleted: {
        console.log("Starting up...")
    }
    
    Component.onDestruction: {
        console.log("App is dying")
    }

运行代码:

关闭窗口:

符合预期!

四、总结

既然Component涉及到构造和析构,你应该就知道它的意义。这将在组件完成加载和需要销毁时,给你提供业务代码入口。你可以在组建加载完毕后实现一些网络获取相关的功能,也可以在销毁时进行数据保存等等。

这将在之后的学习中经常用到哦。

相关推荐
Ada's1 小时前
【计算机基础系列】003:Python数据结构
开发语言·数据结构·python
2601_962885722 小时前
如何用 Python 计算 TRIX 三重指数平滑均线指标?
开发语言·python
还卿一钵无情泪2 小时前
Unsloth 微调 构建自己的大模型 没有GPU也能微调
linux·开发语言·人工智能·python·大模型·nlp·unsloth
倔强的石头1064 小时前
应用账号最小权限实践:读写账号、报表账号、运维账号分层
java·运维·开发语言
传人once4 小时前
页面中心圆圈放大效果如何写
开发语言·javascript·ecmascript
NeilYuen4 小时前
【C++】STL源码仿写(二):vector
开发语言·c++
蜗牛互联网4 小时前
Python消费Responses SSE事件:增量文本、超时与取消
java·开发语言·人工智能·后端·python
weixin_307779135 小时前
C++代码实现MATLAB中的crossval函数功能
开发语言·c++·算法·matlab
ttwuai5 小时前
Go后台管理系统开源项目:4个官方仓库怎么追溯和核验
开发语言·golang·开源
谢亮_vipxieliang5 小时前
Go Worker Pool 设计——从原理到生产级实现
开发语言·后端·golang