我正在尝试使用C++/Qt的混入类(mix in classes)来为一整组小部件提供共同的接口。该接口被定义为基类,如果其他小部件类将其定义为基类,则这些小部件本身将具有那些信号:
class SignalInterface: public QObject {
Q_OBJECT
public:
SignalInterface();
virtual ~SignalInterface();
signals:
void iconChanged(QIcon);
void titleChanged(QString);
}
class Widget1: public SignalInterface, QWidget{
public:
Widget1()
virtual ~Widget1()
// The Widget Should Inherit the signals
}
查看类层次结构后,问题显而易见,我遇到了多重继承中的恐怖菱形问题,在这种情况下,Widget1
继承自QWidget
和SignalInterface
,而这两个类都继承自QObject
。这会引起任何问题吗?
我们知道,如果QObject
类是纯虚的(但实际并非如此),则可以轻松解决此问题。
一种可能的解决方案是:
class Interface: public QWidget {
Q_OBJECT
signals:
void IconChanged(QIcon);
void titleChanged(QString);
}
class Widget1: public Interface {
}
问题在于我已经有很多从QWidget
继承的代码了,现在修改起来很麻烦。是否有其他方法?