Herencia múltiple con QThread y QWidget (Herencia múltiple con QObject)
-
27-10-2019 - |
Pregunta
voy a diseñar OgreWidget
clase -Un widget de renderizado portátil con Qt.
(Con mi diseño), creo que mi clase debe ser heredada con QThread
(para bucle de renderizado infinito) y QWidget
(Widget de destino para que ogro se represente allí).
Pero según mucha documentación y artículos (por ejemplo este), herencia virtual con QObject
no es apoyado .El resultado de esta herencia será el siguiente error:
QObject
es una base ambigua deOgreWidget
¿Cómo debo resolver este problema?
PD:En mi antiguo diseño, creo un separado QWidget
y enviarlo WId
para mi OgreWidget
como widget de destino.Sin embargo, ahora voy a diseñar una interfaz mejor y más limpia.
Solución
Eso es imposible, porque ambos QThread
y QWidget
al final decide QObject
clase base
Este hilo responde a tu pregunta:¿Cómo puedo heredar tanto de QWidget como de QThread?
Otros consejos
El QThread
La documentación es engañosa, no es necesario ni debería subclasificarse. QThread
aquí para su widget.
"Lo estás haciendo mal" - http://labs.qt.nokia.com/2010/06/17/youre-doing-it-wrong/
Deberías:
- Crear un
QThread
ogreThread
, crea tuogreWidget
yogreWidget.moveToThread(&ogreThread)
, o - Crear un
QThread
contenedor que le permite decirle que cree un nuevo objeto de tipo T directamente en el nuevo hilo.