详细描述QObject类是所有
Qt对象的基类。
QObject是
Qt对象模型的中心。这个模型的中心特征就是一种用于无缝对象通讯的被叫做信号和槽的非常强大的机制。你能够使用
connect()把信号和槽连接起来并且可以用dis
connect()来破坏这种连接。为了避免从不结束的通知循环,你可以调用blockSignals()临时地阻塞信号。保护函数
connectNotify()和dis
connectNotify()使跟踪连接成为可能。
QObject把它们自己组织在对象树中。当你创建一个
QObject作为其它对象的父对象,这个对象会在父对象中自动调用insertChild()并且可以在父对象的
children()列表中
显示出来。父对象拥有这个对象,比如,它将在它的析构函数中自动删除它的孩子。你可以使用child()或者queryList()通过名称和任意的类型来查找一个对象,并且使用objectTrees()来获得树根的列表。
每个对象都有一个对象名称(name()),能够报告它的类名(className())并且它在
QObject继承层次中是否继承了另一个类(inherits())。
当对象被删除时,它发射destroyed()信号。你可以捕获这个信号来避免对
QObject的摇摆引用。QGuardedPtr类提供了一种文雅的方式来使用这个机制。
QObject可以通过event()接收事件并且过滤其它对象的事件。详细情况请参考installEventFilter()和eventFilter()。一个方便的处理者,childEvent(),能够被重新实现来捕获子对象事件。
最后但不是最不重要的一点,
QObject提供了
Qt中最基本的定时器,关于定时器的高级支持请参考QTimer。
注意
Q_OBJECT宏对于任何实现信号、槽和属性的对象都是强制的。你也需要对源文件运行
moc程序(元对象
编译器)。我们强烈建议在
QObject的所有子类中使用这个宏,而不管它是不是实际使用了信号、槽和属性,因为不这样做也许会导致普通函数会出现为定义的
问题。
所有的
Qt窗口部件继承了QObject。方便的函数isWidgetType()返回这个对象实际上是不是一个窗口部件。它比inherits( “QWidget” )快得多。
一些QObject函数,比如
children()、objectTrees()和queryList()返回一个QObjectList。QObjectList是QObject的QPtrList。QObjectLists支持像QPtrLists同样的操作并且又一个迭代器类QObjectListIt。也可以参考对象模型。
google_ad_client = "pub-0607928744763968";/* 468x15, 创建于 10-10-29 */google_ad_slot = "9027959185";google_ad_width = 468;google_ad_height = 15; google_protectAndRun("ads_core.google_render_ad", google_handleError, google_render_ad);
上一篇: WordPress 同步文章到新浪微博+新浪博客 标签: children,
connect,
QObject,
Qt,
Qt类专题,
Q_OBJECT,
signal,
slots,
简介 本文链接: Qt Object 类简介--Qt 类简介专题(二) 版权所有: Venus, 转载请注明来源Venus并保留链接地址!
相关文章