0

我要设计OgreWidget类 - 带有 Qt 的便携式渲染器小部件。

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

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

QObject是一个模棱两可的基础OgreWidget

我应该如何解决这个问题?

PS:在我的旧设计中,我创建了一个单独的QWidget,并将它发送WId到我OgreWidget的目标小部件。不过,我现在要设计一个更好、更干净的界面。

4

2 回答 2

2

这是不可能的,因为两者QThread最终都QWidget解析为QObject基类

该线程回答了您的问题: 我如何从 QWidget 和 QThread 继承?

于 2011-09-07T11:56:31.880 回答
0

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

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

您应该:

  • 创建 a QThread ogreThread,创建你的ogreWidgetand ogreWidget.moveToThread(&ogreThread),或
  • 创建一个QThread包装器,允许您告诉它直接在新线程中创建一个类型为 T 的新对象。
于 2011-09-07T14:30:08.893 回答