标题:QT有没有类似安卓EventBus的功能
作者:qq2632671
日期:2020-08-24 09:24
内容:
在Qt中使用信号于槽,但这里有个问题,当我的工程比较复杂时,比如
D是C的类成员,C是B的类成员,B是A的类成员;
T4是T3的类成员,T3是T2的类成员,T2是T1的类成员;
然后D有个QString需要传递给T4,那我不得不进行一大串的信号与曹的连接,即D->C->B->A->T1->Y2->T3->T4;
而实际情况因为工程比较大,信号于槽的连接比这个还要复杂,我想问下有没有类似安卓EventBus的这种机制,不需要显示的连接
#1 [jack_zhang 08-24 10:17]
是不是可以不用信号槽的方式?
创建一个socket类,用来两个类的交互?
#2 [gnibuoz 08-24 10:50]
没有现成的,但是这个自己造一个也很简单啊,可以创建一个如下的专门用来处理复杂信号槽的单例类,然后在有该种需求的时候,只需要引入这个头文件,然后用这个单例类里边的信号来通信就可以了,触发的时候直接Observer::instance()->somethingChanged("我是参数");然后在接收方直接connenct这个单例的信号就好了
/// Observer.h
/**
观察者单例类
**/
struct Observer : QObject{
Q_OBJECT
public:
static Observer* instance()
{
static Observer _;
return &_;
}
signals:
void somethingChanged(const QString& content);
private:
Observer(){}
}
#3 [青空飞羽 08-24 14:09]
直接将D和T4进行信号槽连接呢,为啥要中转那么多次呢
#4 [cj123sn 08-25 13:38]
globalSignal 单例
#5 [九重水 08-25 14:31]
3楼正解!直接对接D和T4,中间的雨女无瓜。
connect(A->B->C->D, SIGNAL(...), T1->T2->T3->T4, SLOT(....))