QT:QObject 简单介绍
QObject 是所有Qt对象的基类。
QObject 是Qt模块的核心。它的最主要特征是关于对象间无缝通信的机制:信号与槽。使用connect()建立信号到槽的连接,使用disconnect()销毁连接,使用blockSignals()暂时阻塞信号以避免无限通知循环,使用connectNotify()和disconnectNotify()追踪连接。
QObject 以对象树的形式组织起来。当为一个对象创建子对象时,子对象会自动地添加到父对象的children()列表中。父对象拥有子对象的所有权,比如父对象可以在自己的析构函数中删除它的孩子对象。使用findChild()或findChildren()通过名字和类型查询孩子对象。
每个对象都有objectName(),也可以通过metaObject()获得它的类名。可以使用inherits()检测对象的类是否在某个类的继承层次结构中。
对象被删除时,发射destroyed()信号,捕捉这个信号以免悬挂对这个对象的引用。
QObject 通过event()接收事件,通过installEventFilter()和enventFilter()过滤来自其他对象的事件。childEvent()可以捕捉来自子对象的事件。
QTimer可以实现高水平的定时器。
宏Q_OBJECT是任何实现信号、槽或属性的强制性要求。不管是否需要实现这些机制,都要求使用这个宏。否则会引发一些函数的奇怪行为。
所有的Qt部件都继承自QObject 。函数isWidgetType()检测对象是否一个部件。它比以下这些语句要运行得更快:qobject_cast(obj) 或者obj->inherits("QWidget")。
children()返回QObjectList,它是QList的typedef。
没有复制构造函数和赋值操作符
QObject 既没有复制构造函数也没有赋值操作符。实际上它们使用宏Q_DISABLE_COPY()声明在私有部份。所有派生自QObject 的对象都使用这个宏声明复制构造函数和赋值操作符为私有。
这样的主要结果是,在使用QObject子对象作为值的地方要使用QObject类型的指针。因为没有构造函数,你不能把QObject 的子对象作为值存储在容器类中,必须存储它的指针。
自动连接
Qt的元对象系统自动地为QObject 的子类和他们的对象建立信号和槽的连接。只要有名字的对象被定义,槽就会自动拥有简单的约定命名,连接在运行时间通过函数QMetaObject::connectSlotsByName()执行。
国际化
所有的 QObject 支持Qt的转换特性。能够使用户界面在不同语言间进行转换。为了将用户可见的文本得到转换,必须将它们包裹到函数tr()中。
转自:http://blog.chinaunix.net/uid-374124-id-4121508.html
QT:QObject 简单介绍的更多相关文章
- Qt Quick 简单介绍
Qt Quick 是 Qt 提供的一种高级用户界面技术.使用它可轻松地为移动和嵌入式设备创建流畅的用户界面. 在 Android 设备上, Qt Quick 应用默认使用 OpenGL ES ,渲染效 ...
- Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:
Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...
- [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件
转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...
- CMake 简单介绍 图
http://tech.uc.cn/?p=914 CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran ...
- CMake 简单介绍
CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran/Java 的相依性的自动分析功能,免除了程序员对代码依赖 ...
- qt-qml移动开发之在ios上开发和部署app流程简单介绍
qt5.3已经全面支持移动开发,除了mac,windows,linux.还支持ios,android,wp,meego等移动平台,本教程是作者依据自己的经验,从头讲怎么样在ios上公布自己的app.因 ...
- 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍
**************************************************************************************************** ...
- c++开源爬虫-Larbin简单介绍
原文地址:http://leihuang.net/2014/06/16/Larbin-Introduction/ 由于近期学校实训.做的是一个搜索相关的项目,而且是c++的一个项目.所以就想到了lar ...
- Qt Quick 布局介绍
在 Qt Quick 中有两套与布局管理相关的类库,一套叫作 Item Positioner(定位器),一套叫作 Item Layout(布局). 定位器包括 Row(行定位器).Column(列定位 ...
随机推荐
- ios 关于屏幕旋转和屏幕晃动
内置加速计是智能手机最酷的特性之一,ios可以通过这个小设备知道用户握持手机的方式,以及用户是否移动了手机,ios使用加速计处理自动旋转,并且许多游戏都是用它作为控制机制,它还可以用于检测摇动和其他突 ...
- 【Unity】3.4 将现有的3ds Max模型导入到Unity
分类:Unity.C#.VS2015 创建日期:2016-04-05 一.简介 这一节我们用一个带有"装子弹和上膛"动画的"枪"模型,介绍在3ds Max 20 ...
- java: 保留两位小数4种方法
import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; public c ...
- dom4j: 生成的XML文件根节点 xmlns="" 的问题
使用dom4j写入XML文件时,写入完毕后发现root element中没有 xmlns,也即是没有命名空间. 正确的写法如下: Document document = DocumentHelper. ...
- For循环语句解析
偶然一次看见for循环语句,就对i++和++i(这里假设增值为1)有点疑问,这个以前就遇到过,长时间不去想,就又忘了,这里记忆一下. for循环的一般格式为: for(表达式1:表达式2:表达式3) ...
- 每日英语:Got 5 Minutes? 'Flash Fiction' Catches On
Chinese author Lao Ma has a simple approach to his short stories: In the face of life, everything is ...
- 每日英语:Welcome to the Global Middle-Class Surge
The mass uprisings this summer in Egypt, Turkey and Brazil are powerful reminders that the middle cl ...
- vim学习日志(7):替换、删除文件中的字符
vim全局替换文件: 语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:“1,20 ...
- quick3.3final版创建项目报错解决
PHP Notice: Undefined index: QUICK_V3_ROOT in 405,469,497,520,551这5行代码都访问了一个环境变量$_ENV['QUICK_V3_ROO ...
- android category
本章节翻译自<Beginning-Android-4-Application-Development>,如有翻译不当的地方,敬请指出. 原书购买地址http://www.amazon.co ...