Tengo un problema con QT con respecto a la herencia múltiple debido a QObject. Sé que muchos otros tienen los mismos problemas, pero no sé cómo debo solucionarlos.Qt herencia múltiple y señales
class NavigatableItem : public QObject
{
Q_OBJECT
signals:
void deselected();
void selected();
void activated();
};
class Button : public NavigatableItem, public QToolButton
{
Q_OBJECT
...
}
class MainMenuOption : public Button
{
Q_OBJECT
...
}
Cuando hago esto
MainMenuOption* messages = new MainMenuOption();
connect(messages, SIGNAL(selected()), SLOT(onMenuOptionSelected()))
que obtendrá el error:
QObject' is an ambiguous base of 'MainMenuOption'
La razón por la que dejo NavigatableItem enherit de QObject debido a las señales. ¿Hay alguna forma de hacer esto?
Editar:
Adición virtual para cada declaración de sucesiones, todavía me da el mismo error:
class NavigatableItem : public virtual QObject
class Button : public virtual NavigatableItem, public virtual QToolButton
class MainMenuOption : public virtual Button
Incluso después de una 'limpia todo', 'qmake correr' y 'construir todos' .
Usted no puede heredar de múltiples QObject subclases. Solo uno de ellos puede ser un QObject, y debe ser el primero en la lista. –
Intente eliminar esos archivos 'moc_ *', '* .obj' y tener una Rebuild All .. – liaK
Ver la pregunta actualizada. La reconstrucción no lo solucionó. – RvdK