我将使用Qt设计OgreWidget
类-A可移植渲染器小部件。
(根据我的设计),我认为我的类需要继承QThread
(用于无限渲染循环)和QWidget
(用于渲染ogre的目标小部件)。
但是根据许多文档和文章(例如this),不支持使用QObject
的虚拟继承。
这种继承的结果将是一个错误:
的模糊基础
QObject
是OgreWidget
我该如何解决这个问题?
PS:在我的旧设计中,我创建了一个单独的QWidget
,并将WId
作为目标窗口小部件发送到OgreWidget
。但是,我现在要设计一个更好,更清洁的界面。
答案 0 :(得分:2)
这是不可能的,因为最后QThread
和QWidget
都解析为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
,创建ogreWidget
和ogreWidget.moveToThread(&ogreThread)
,或QThread
包装器,允许您告诉它直接在新线程中创建类型为T的新对象。