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 简单介绍的更多相关文章

  1. Qt Quick 简单介绍

    Qt Quick 是 Qt 提供的一种高级用户界面技术.使用它可轻松地为移动和嵌入式设备创建流畅的用户界面. 在 Android 设备上, Qt Quick 应用默认使用 OpenGL ES ,渲染效 ...

  2. Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法:

    Qt中利用QTime类来控制时间,这里简单介绍一下QTime的成员函数的用法: ------------------------------------------------------------ ...

  3. [QT]简单介绍一下 *.pro、*.pri、*.prf、*.prl等四种文件

    转自:http://blog.csdn.net/dbzhang800/article/details/6348432 简单介绍一下 *.pro.*.pri.*.prf.*.prl等四种文件:干嘛用的, ...

  4. CMake 简单介绍 图

    http://tech.uc.cn/?p=914     CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran ...

  5. CMake 简单介绍

    CMake特点 CMake需要用户用CMake规范的语法编写CMake脚本,该语法简单易用,入门极其顺手 原生支持 C/C++/Fortran/Java 的相依性的自动分析功能,免除了程序员对代码依赖 ...

  6. qt-qml移动开发之在ios上开发和部署app流程简单介绍

    qt5.3已经全面支持移动开发,除了mac,windows,linux.还支持ios,android,wp,meego等移动平台,本教程是作者依据自己的经验,从头讲怎么样在ios上公布自己的app.因 ...

  7. 基于SIP和RTP协议的开源VOIP之QuteCom简单介绍

    **************************************************************************************************** ...

  8. c++开源爬虫-Larbin简单介绍

    原文地址:http://leihuang.net/2014/06/16/Larbin-Introduction/ 由于近期学校实训.做的是一个搜索相关的项目,而且是c++的一个项目.所以就想到了lar ...

  9. Qt Quick 布局介绍

    在 Qt Quick 中有两套与布局管理相关的类库,一套叫作 Item Positioner(定位器),一套叫作 Item Layout(布局). 定位器包括 Row(行定位器).Column(列定位 ...

随机推荐

  1. java服务端技术

    服务端框架:1.servlet2.netty 协议:1.http 1.02.http 1.1 数据库:mysql 对象关系映射(ORM)框架:mybatis 缓存:redis eclipse能运行,导 ...

  2. git 生成ssh keys

    最近从svn转到gitlab 记录一下如何生成ssh keys 首先下载GitExtensions246SetupComplete.msi并安装,如果已经安装了git,那么安装途中就跳过就行 安装完毕 ...

  3. Atitit mysql存储过程编写指南

    Atitit mysql存储过程编写指南 1.1. 设定参数与返回值  `obj_id` int ,,返回类型 varchar(200)1 1.2. 在语句中使用传入的obj_id参数1 1.3. 测 ...

  4. [na]ip数据包格式

    IP Datagram Structure 字段名 解释 版本 IP协议的版本,目前的IP协议版本号为4,下一代IP协议版本号为6. 首部长度 IP报头的长度.固定部分的长度(20字节)和可变部分的长 ...

  5. android:clipChildren 属性

    这个属性默认为true: 两个用法: 1.设置为false ,使用ViewPager 的时候能够 实现一屏上显示多个Item 2.动画能越界

  6. 深入浅出HTTPS基本原理

    基础知识准备:在了解HTTPS的基本原理之前,需要先了解如下的基本知识. 一.什么是HTTPS,TLS,SSL HTTPS,也称作HTTP over TLS.TLS的前身是SSL,TLS 1.0通常被 ...

  7. 每日英语:Teens Are Still Developing Empathy Skills

    The teen years are often fraught with door-slamming, eye-rolling and seeming insensitivity, even by ...

  8. golang遇到的win下读取txt字符乱码的问题

    import ( "encoding/csv" "os" "github.com/axgle/mahonia" ) // GetCSV 读取 ...

  9. 【驱动】DM9000A网卡驱动框架源码分析

    Linux网络设备结构 首先看一下Linux网络设备的结构,如下图: 网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发 ...

  10. LeetCode: N-Queens II 解题报告

    N-Queens II (LEVEL 4 难度级别,最高级5) Follow up for N-Queens problem.