qt信号和槽机制分析

qt信号和槽机制分析

ID:33413912

大小:121.00 KB

页数:17页

时间:2019-02-25

qt信号和槽机制分析_第1页
qt信号和槽机制分析_第2页
qt信号和槽机制分析_第3页
qt信号和槽机制分析_第4页
qt信号和槽机制分析_第5页
资源描述:

《qt信号和槽机制分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、一:Let’sgo,StartingFromtheQObjectQObject这个class是QT对象模型的核心,绝大部分的QT类都是从这个类继承而来。这个模型的中心特征就是一个叫做信号和槽(signalandslot)的机制来实现对象间的通讯,你可以把一个信号和另一个槽通过connect(…)方法连接起来,并可以使用disconnect(…)方法来断开这种连接,你还可以通过调用blockSignal(…)这个方法来临时的阻塞信号.   QObject把它们自己组织在对象树中。当你创建一个QObject并使用其它对象作为父对象时,这个对象会自动

2、添加到父对象的children()list中。父对象拥有这个对象,比如,它将在它的析构函数中自动删除它所有的child对象。你可以通过findChild()或者findChildren()函数来查找一个对象。   每个对象都有一个对象名称(objectName())和类名称(classname),他们都可以通过相应的metaObject对象来获得。你还可以通过inherits()方法来判断一个对象的类是不是从另一个类继承而来。   当对象被删除时,它发出destroyed()信号。你可以捕获这个信号来避免对QObject的无效引用。   QOb

3、ject可以通过event()接收事件并且过滤其它对象的事件。详细情况请参考installEventFilter()和eventFilter()。   对于每一个实现了信号、槽和属性的对象来说,Q_OBJECT宏都是必须要加上的。   QObject实现了这么多功能,那么,它是如何做到的呢?让我们通过它的SourceCode来解开这个秘密吧。QObject类的实现文件一共有四个.·qobject.h,QObjectclass的基本定义,也是我们一般定义一个类的头文件.·qobject.cpp,QObjectclass的实现代码基本上都在这个文件

4、.·qobjectdefs.h,这个文件中最重要的东西就是定义了QMetaObjectclass,这个class是为了实现signal、slot、properties,的核心部分。·qobject_p.h,这个文件中的code是辅助实现QObjectclass的,这里面最重要的东西是定义了一个QObjectPrivate类来存储QOjbect对象的成员数据。理解这个QObjectPrivateclass又是我们理解QTkernelsourcecode的基础,这个对象包含了每一个QT对象中的数据成员,好了,让我们首先从理解QObject的数据存储

5、代码开始我们的QTKernelSourceCode之旅。二:元对象系统(Meta-ObjectSystem)  从本节开始,我们讲解QTMeta-ObjectSystem的功能,以及实现。   在使用QT开发的过程中,大量的使用了signal和slot.比如,响应一个button的click事件,我们一般都写如下的代码:classMyWindow:publicQWidget{ Q_OBJECT public: MyWindow(QWidget*parent):QWidget(parent) {   QPushButton*btnStart=ne

6、wQPushButton(“start”,this);   connect(btnStart,SIGNAL(clicked()),this,SLOT(slotStartClicked())); }privateslots: voidslotStartClicked();};voidMyWindow::slotStartClicked(){   //省略}   在这段代码中,我们把btnStart这个button的clicked()信号和MyWindow的slotStartClicked()这个槽相连接,当btnStart这个button被用户按

7、下(click)的时候,就会发出一个clicked()的信号,然后,MyWindow::slotStartClicked()这个slot函数就会被调用用来响应button的click事件。   这段代码是最为典型的signal/slot的应用实例,在实际的工作过程中,signal/slot还有更为广泛的应用。准确的说,signal/slot是QT提供的一种在对象间进行通讯的技术,那么,这个技术在QT中是如何实现的呢?   这就是QT中的元对象系统(MetaObjectSystem)的作用,为了更好的理解它,让我先来对它的功能做一个回顾,让我们一

8、起来揭开它神秘的面纱。Meta-ObjectSystem的基本功能MetaObjectSystem的设计基于以下几个基础设施:·QObject类作为每

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。