In my Qt application, I have a base class as follow. I am using QObject
because I want to use Signal-Slot mechanism in all derived classes.
clas
In the current incarnation, it isn't possible to use QObject
in multiple inheritance paths for a derived class (like your IRzLayeringPlugin
class). The only solution I've ever seen was to create an interface class without any QObject
inheritence, but with functions that directly correspond to the QObject
functions you want to use, then implement the bridge between the interface and your other QObject
class inheritance in your specific class. It gets ugly fairly quickly.
There was a similar question today here.
Basically, two things are needed:
Q_DECLARE_INTERFACE
after the interface class declarationQ_INTERFACES
macro of the classAfter this, qobject_cast will work with your interfaces.
If you'd like to use signals and slots from the interfaces, you are out of luck, because you can only do that with types that derive from QObject. But in this case, you would always get the 'QObject' is an ambiguous base of 'IRzLayeringPlugin'
error.
In this case, @Caleb's idea is still the best.