QT QObject分析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT QObject分析相关的知识,希望对你有一定的参考价值。
参考技术A 看了上面大佬写的东西,自己也总结一下吧,元对象系统中实现了很多功能,有信号槽机制,将信号,槽,qt 的一些宏转化为 moc_*.h文件,而且其中的信号和槽连接,是通过字符串连接的,然后通过存储的数据,在函数中判断所类型,和取得的序列号,然后通过switch case到达相应的槽。值得注意的点:
而对于qobject的构造函数,首相将q指针,指向this,将d指针指向threadData,然后在初始化threadData,设置父节点
Q_D(QObject);
d_ptr->q_ptr = this;
d->threadData = (parent && !parent->thread()) ? parent->d_func()->threadData : QThreadData::current();
d->threadData->ref();
if (parent)
QT_TRY
if (!check_parent_thread(parent, parent ? parent->d_func()->threadData : 0, d->threadData))
parent = 0;
setParent(parent);
QT_CATCH(...)
d->threadData->deref();
QT_RETHROW;
#if QT_VERSION < 0x60000
qt_addObject(``this``);
#endif
if (Q_UNLIKELY(qtHookData[QHooks::AddQObject]))
reinterpret_cast``<QHooks::AddQObjectCallback>(qtHookData[QHooks::AddQObject])(``this``);
以上是关于QT QObject分析的主要内容,如果未能解决你的问题,请参考以下文章