【发布时间】:2019-08-30 15:51:23
【问题描述】:
我想在不同的类之间共享信号和可能的插槽实现,但似乎 Qt 不允许这样做。
基本上我想要类似的东西:
class CommonSignals
{
signals:
void mysignal();
};
class A :
public QObject,
public CommonSignals
{
Q_OBJECT
public:
void doSomething()
{
emit mysignal();
}
};
class B :
public QObject,
public CommonSignals
{
Q_OBJECT
public:
B()
{
connect(&a, &A::mysignal, this, &B::mysignal);
}
A a;
};
因此,当由于某种原因 A 发出信号时,B 也发出相同的信号。这样可以避免无用的代码复制并提高可维护性。
有什么想法吗?
PS 我也尝试过使用虚拟继承,但我遇到了经典的 qmake 问题
【问题讨论】:
-
你有一个错字:
connect(&a, &A::mysignal, this, &B::mysignal);会修正你的错误。 -
我已经编辑了问题,相信我不是那个问题:)
-
CommonSignals不继承自QObject,因此不能有与之关联的信号。您没有看到来自moc的任何错误或警告消息吗? -
@Jarod42 你可以将一个信号连接到另一个信号,这很好。
-
@G.M.使用多重继承,只允许一个基类是
QObject。所以CommonSignals不可能是一个。这意味着它不能使用信号。
标签: c++ qt inheritance signals-slots qobject