I am trying to use mix in classes for C++/Qt to provide a whole bunch of widgets with a common interface. The interface is defined in such as way so that if it is defined as
Qt allows multiple inheritance if the base class inherits privately from QObject.
Example:
class Base: private QObject {
Q_OBJECT
/*Can use signals and slots like any other QObject-derived class*/
};
class Derived1: public Base {
/*Cannot use signals/slots because it does not "see" that Base inherits from QObject*/
};
class Derived2: public QWidget, public Base {
Q_OBJECT
/*Can use signals/slots plus has all the functionality of QWidget and Base*/
};
Of course, private inheritance is a different animal altogether and may not give you the solution you really need. What I use it for is when I can get away with using signals/slots only in the base class. When I really do need QObject behavior in a derived class, I inherit from QObject specifically for just that class.