Множественное наследование с QThread и QWidget (Множественное наследование с QObject) - PullRequest
0 голосов
/ 07 сентября 2011

Я собираюсь разработать OgreWidget class -A портативный виджет рендеринга с Qt.

(С моим дизайном), я думаю, мой класс должен быть унаследован с QThread (для бесконечного цикла рендеринга)) и QWidget (целевой виджет для огров, который будет отображаться там).

Но согласно многим документам и статьям (например, this ), виртуальное наследование с QObject не поддерживается.Результатом этого наследования будет такая ошибка:

QObject является неоднозначным основанием OgreWidget

Как мне решить эту проблему?

PS: В моем старом дизайне я создаю отдельный QWidget и отправляю WId моему OgreWidget в качестве целевого виджета.Однако сейчас я собираюсь разработать лучший и более чистый интерфейс.

Ответы [ 2 ]

2 голосов
/ 07 сентября 2011

Это невозможно, потому что и QThread, и QWidget в конце концов преобразуются в QObject базовый класс

Эта тема отвечает на ваш вопрос: как мне наследовать от QWidget и QThread?

0 голосов
/ 07 сентября 2011

Документация QThread вводит в заблуждение, вам не нужно и не должно быть подкласса QThread здесь для вашего виджета.

"Вы делаете это неправильно" - http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/

Вы должны либо:

  • Создайте QThread ogreThread, создайте ogreWidget и ogreWidget.moveToThread(&ogreThread) или
  • Создайте оболочку QThread, которая позволяет вам создать новый объект типа T непосредственно в новом потоке.
...