使用QThread和QWidget进行多重继承(使用QObject进行多重继承)

时间:2011-09-07 11:51:37

标签: c++ qt multiple-inheritance qobject ogre

我将使用Qt设计OgreWidget类-A可移植渲染器小部件。

(根据我的设计),我认为我的类需要继承QThread(用于无限渲染循环)和QWidget(用于渲染ogre的目标小部件)。

但是根据许多文档和文章(例如this),不支持使用QObject的虚拟继承。 这种继承的结果将是一个错误:

  

QObjectOgreWidget

的模糊基础

我该如何解决这个问题?

PS:在我的旧设计中,我创建了一个单独的QWidget,并将WId作为目标窗口小部件发送到OgreWidget。但是,我现在要设计一个更好,更清洁的界面。

2 个答案:

答案 0 :(得分:2)

这是不可能的,因为最后QThreadQWidget都解析为QObject基类

这个主题回答了你的问题: how can i inherit from both QWidget and QThread?

答案 1 :(得分:0)

QThread文档具有误导性,您不需要也不应该在此处对您的小部件进行子类化QThread

“你做错了” - http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/

你应该:

  • 创建QThread ogreThread,创建ogreWidgetogreWidget.moveToThread(&ogreThread),或
  • 创建一个QThread包装器,允许您告诉它直接在新线程中创建类型为T的新对象。