qobject基础的多重继承

时间:2012-08-26 15:28:07

标签: c++ qt inheritance

代码示例:

class TestOne : public QWidget // To fix this i need to modify  class QWidget : public virtual QObject{}; which belongs to qt
{
  // ...
};

class TestTwo : public virtual QObject
{
  // ...
};

class Test : public TestOne, public TestTwo
{
 // ...
};

有什么其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:10)

QObject不是为多重继承而设计的。 QObject不支持来自另一个QObject的多重继承。如果从两个类继承,则只有第一个可以是QObject,第二个不是http://qt-project.org/doc/qt-4.8/moc.html

  

不支持使用QObject进行虚拟继承。

您可以在两个QObject之间建立关联并在它们之间转发信号。

您可以以不需要信号/槽并且不从QObject继承的方式抽象您的常用功能。然后继承它。然后将MI中的QObject免费课程与您的班级混合。您可以通过Derived QObject

中的信号/槽将调用转发给那些继承的方法