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

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

相关推荐
apcipot_rain2 小时前
C++转Java日记(06)
java·开发语言
SomeOtherTime9 小时前
Rust所有权(AI回答)
开发语言·后端·rust
Easyhood9 小时前
Android 开发入门实践(十四):Compose 副作用入门与四个常用 API
android·开发语言·kotlin·android jetpack·compose
白杨尚青10 小时前
C++进阶篇(六):map 和 set 的模拟实现——用红黑树封装 mymap/myset(迭代器 + operator[])
开发语言·c++·迭代器·stl·set·map·红黑树
饮水桶_T14 小时前
JAVA IO流笔记
开发语言·数据结构·算法
柳鲲鹏14 小时前
内斗学概论:43、平级内斗
笔记
Felven16 小时前
C. Brr Brrr Patapim
c语言·开发语言
星恒随风16 小时前
MySQL 从零入门(四):表的增删改查与基础查询详解
linux·服务器·数据库·笔记·mysql
li星野17 小时前
相位补偿学习记录:把被颅骨“打乱“的声波重新对齐
学习
Z21-X17 小时前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生