2011-09-07 78 views
0

我將設計「OgreWidget」類 - 使用Qt的便攜式渲染器小部件。 (我的設計),我認爲我的類需要用QThread(用於無限渲染循環)和QWidget(用於渲染食人魔的目標部件)繼承。使用QThread和QWidget進行多重繼承(使用QObject進行多重繼承)

但根據許多文檔和文章(例如:http://doc.trolltech.com/4.6/moc.html#multiple-inheritance-requires-qobject-to-be-first),不支持使用QObject進行虛擬繼承。 這個繼承的結果是:'QObject'是'OgreWidget'err的一個不明確的基礎。

我應該如何解決這個問題? PS:在我以前的設計中,我創建了一個單獨的QWidget,並將其發送到我的OgreWidget作爲目標小部件。 但我現在要設計一個更好,更乾淨的界面。

回答

0

的QThread的文檔是誤導,你不需要和不應該在這裏爲你的小部件子類化QThread。

「你這樣做是錯誤的」 - http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/

您應該:

  • 創建的QThread ogreThread,創建ogreWidget和ogreWidget.moveToThread(& ogreThread),或
  • 創建一個QThread包裝器,它允許你告訴它直接在新線程中創建一個類型爲T的新對象。