查漏补缺:QObject类介绍
QObject是Qt对象模型的中心。这个模型的核心特征就是一种用于无缝对象间通信的被叫做信号和槽的非常强大的机制,可以使用connect()把信号和槽连接起来,也可以通过disconnect()来破坏这种连接。为了避免永无止境的通知循环,可以使用blockSignal()函数来暂时阻塞信号。保护函数connectNotify()和disconnectNotify()使跟踪连接成为可能。
QObject把它们自己组织在对象树中。当创建一个以QObject作为父对象的其它对象时,这个对象会自动调用父对象中的insertChild()并且可以在父对象的children()列表中显示出来。父对象拥有这个对象,例如它可以在它的析构函数中删除它的孩子。可以通过使用child()或者queryList()通过名称和任意的类型来查找以恶搞对象,使用objectTrees()来获取树根的列表。
每个对象都有一个对象名称(name()),能够报告它的类名(className())并且它在QObject继承层次中是否继承了另一个类(inherits())。当对象被删除时,会发射destroyed()信号,可以通过捕获这一信号来避免对QObject的摇摆引用。QGuardedPtr类提供了一种文雅的方式来使用这个机制。
QObject可以通过event()接收事件并且过滤其它对象的事件。
QObject中还提供了Qt中最基本的定时器,QTimer提供了更高级的定时器支持。
任何要实现信号和槽的对象,Q_OBJECT宏都是强制要求书写的。
Qt中的所有窗口部件都继承自QObject,可以通过isWidgetType()函数来判断这个对象是不是一个窗口部件。
最新文章
- [转载] 纯手打 第一篇:安装配置gradle
- Linux字符界面下用户账户的设置
- Jquery中$(document).ready()与传统JavaScript中的window.onload方法的区别(2016/8/3)
- 简单工厂模式的C++实现
- C#学习第四天
- ClipDrawable 资源
- php学习笔记——CSS缓存问题
- 如何在MySQL中设置外键约束以及外键的作用
- sql server存储过程实现批量删除
- 【转】VMware 克隆 Linux 系统后找不到 eth0 网卡问题
- C语言第二次博客作业---分支结构 陈张鑫
- Your project path contains non-ASCII characters
- ADB——查看手机设备信息
- centos6.5之Hadoop1.2.1完全分布式部署安装
- form表单验证字段学习总结
- The prefix ";mvc"; for element ";mvc:annotation-driven"; is not bound 异常
- 插入排序的C、C++实现
- 【Tsinsen-A1486】树(王康宁) 点分治 + Trie
- Bat脚本实现监控进程功能
- RTSP HTTP RTP RTCP
热门文章
- Ubuntu下安装Docker,及Docker的一些常用命令操作
- LeetCode——376.摆动序列
- 日期控件 My97DatePicker WdatePicker 日期格式
- tmp == emg.经典+47
- 手机APP例如抖音,让 people‘s 注意力集中到了 社会进化的 优胜部分 (优胜劣汰,什么是优) + 真善美,的 “美” , 促进了2极分化, 会产生强者俞强,弱者越弱,确实促进了信息的流通,传播了有用的东东 产生了独特的价值 而 如何 能计算出这些价值呢, 需要 数学 金融 财务 货币 量化吗
- 迅为IMX6Q开发板提供原理图_底板PCB_驱动程序源码_芯片和LCD数据手册_开发板环境_使用手册
- Git ubuntu 升级
- kubectl 命令详解
- android适配全机型悬浮框、视频APP项目、手势操作、Kotlin妹子App、相机图片处理等源码
- file_get_contents为何无法采集某些压缩过的网站