Qt 动态信号与槽

 本文来自 CSDN 博客。x

似乎太困难了有些无从下手,想整理一下 QA xObject 动态信号和槽的实现。先随便写写,以后看懂了再继续

注: Qt5 stage 仓库已经引入一种全新的信号与槽的语法:信号可以和普通的函数、类的普通成员函数、 lambda 函数连接(而不再局限于信号函数和槽函数)详见 信号与槽的新语法 ( Qt5

meta object

网上关于元对象的解释已经很多了所以我简单提一下就可以了

派生自 QObject 类可以添加一个 Q_OBJECT 宏

#defin Q_OBJECT /

public: /

     Q_OBJECT_CHECK /

     static const QMetaObject staticMetaObject; /

     virtual const QMetaObject *metaObject const; /

     virtual void *qt_metacast const char * ; /

     QT_P_FUNCTIONS /

int,     virtual int qt_metacal QMetaObject::Call. void ** ; /

private: 运行 moc 对包含该类的文件进行预处理

为了清楚起见,moc xxx.h -o moc_xxx.cpp 生成的该文件包含我元对象的所有信息。看一下 QMetaObject 定义的数据成员局部:

struct QMetaObject

{

...

...

priv

struct { // privat data

        const QMetaObject *superdata;

        const char *stringdata;

        const uint *data;

        const void *extradata;

    } d;

会发现里面一个字符数组和整数数组。对应这儿的 stringdata 和 data } 可以随便找一个 moc_xxx.cpp 文件。

信号与槽

moc 生成的文件中包括信号与槽的信息,正常情况下。而每一个信号或槽

有一个对应的字符串 ( 对应函数原型 )

有一个索引

有一个函数定义体 ( 信号和槽都是一个普通的函数 )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值