c++ - qobject 基础的多重继承

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

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

最佳答案

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

Virtual inheritance with QObject is not supported.

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

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

关于c++ - qobject 基础的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12131357/

相关文章:

c# - 如何访问附加到派生类的值?

qt - 如何在 CMake 中使用现有的 QMake 项目(.pro 项目文件)作为 "external project"?

c++ - QProcess:启动子进程而不等待完成但收到完成信号

c++ - 是否有 `__FILE__` 的广泛可用的宽字符变体?

c++ - 如何在图表的 Y 轴上设置自定义值

c++ - 使用 QQuickView 或 QQmlApplicationEngine 在 ApplicationWindow 之间切换页面

c++ - 为什么我不能将父类(super class)引用强制转换为也扩展另一个父类(super class)的子类?

c++ - 从接口(interface)和实现 C++ 继承

c# - Com 互操作结构定义与内存布局不匹配

c++ - boost 属性 write_json 不正确的行为