I'm going to skip drawing the ASCII art here. :P

But, I've done something similar using a template as my base class. It may hamper usage of signals and slots, though -- haven't tested that.

The 'leaf' classes inherit the template, which has two arguments: the QWidget-based class and the plugin interface:

template<class QW, class PI>
MyMixer
{
};

then

class MyWidgetWithCoolStuff : public MyMixer<QWidget, PlugIn>
{
Q_OBJECT
};

...

class MyOtherWidgetWithCoolStuff : public MyMixer<QGLWidget, PlugIn>
{
Q_OBJECT
};

As I said... I haven't had the need to use signals / slots with this, so I wouldn't be surprised of moc has trouble with it. In my case, I have several separate "mixin" interfaces that one can pair with a QWidget-based window, and the template implements all the common code.

Fun! Fun! FUN!!!