En mi aplicación Qt, tengo una clase base de la siguiente manera. Estoy usando QObject porque quiero usar el mecanismo Signal-Slot en todas las clases derivadas.¿Cuál es la forma correcta de herencia múltiple en Qt/C++?
class IRzPlugin : public QObject {
public:
virtual void registerMenu(QWidget*);
virtual void execute();
}
Luego tengo otra clase de la siguiente manera. Necesito extender desde QWidget porque necesito implementar métodos de manejo de eventos en todas las clases derivadas. (MouseMoveEvent(), keyPressEvent() .. etc);
class IRzLayeringPlugin : public IRzPlugin , public QWidget{
}
Pero compilador da a estos los errores:
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx: In member function `virtual const QMetaObject* IRzLayeringPlugin::metaObject() const':
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'
C:\svn\osaka3d\tags\iter08\prototype\osaka3d\rinzo\plugin\moc_IRzLayeringPlugin.cxx:51: error: `QObject' is an ambiguous base of `IRzLayeringPlugin'
make[2]: *** [CMakeFiles/Rinzo.dir/plugin/moc_IRzLayeringPlugin.cxx.obj] Error 1
gracias, eso es lo que hice finalmente / –