信号/插槽基类多重继承

时间:2018-02-15 14:49:35

标签: c++ qt signals signals-slots

在我的Qt多线程程序中,我想实现一个基于QObject的基类,这样从它派生的每个类都可以使用它的信号和槽(例如抛出错误)。

我实施了MyQObject : public QObject{...}。但是对于从QWidget派生的类,我无法从QWidget和MyQObject进行多重继承。

我可以通过QMetaObject :: invokeMethod(...)直接调用插槽来解决问题,但我感兴趣的是还有另一种方法可以解决这个问题。

1 个答案:

答案 0 :(得分:0)

使用QObject进行多重继承可以遵循以下规则:

  1. 只有一个父类可以是QObject / QWidget

  2. QObject父级必须是初始化中的第一个父级。

  3. 这是一个技巧,允许您在非qobject接口中声明类似函数的信号,然后声明它使用合成继承该接口。看看this post,它可能会有用。