7

代码示例:

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
{
 // ...
};

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

4

1 回答 1

11

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

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

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

您可以以不需要信号/插槽并且不从 QObject 继承的方式抽象您的常用功能。然后继承它。然后将 MI 中的 QObject 免费课程与您的课程混合。您可以通过来自 Derived QObject 的信号/插槽将调用转发给那些继承的方法

于 2012-08-26T16:41:52.490 回答