前面的博文有提到过,用map实现C++伪反射法,其实还有好多玩法,QT中,可以模拟全局消息等等。

注册示例:
QEos::Attach("UnitMetaMgrChangeName", this, SLOT(onUnitMetaMgrChangeName(const QVariantList&)));

槽函数:

 void LinkGraphScene::onUnitMetaMgrChangeName(const QVariantList& va)
{
        QString oldName = va[0].toString();
        QString newName = va[1].toString();
}

呼应示例:      

 QEos::Notify("UnitMetaMgrChangeName", QVariantList() << oldName << name);

 QEos::Notify("MainFlowModuleQuit", QVariantList() << true);

这样做的好处有:

1:类似于PostMessage全局项目呼应

2:QT队列消息,不用担心影响UI界面卡顿问题

槽函数里可以直接进行处理

当然也不是没有缺点:

 多线程循环中,要注意,connect,disconnect的处理,否则容易引起内存泄漏和野指针。

11-15 02:35