我想在C++/Qt的类中使用混合,以提供一大堆使用通用接口的小部件。接口是这样定义的,如果它被定义为其他窗口类的基类,那么这个窗口小部件本身就会有这些信号。即参考下面。QObject多继承
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的继承,其痛苦的破解,在,是否有另一种方式?
看看:http://stackoverflow.com/questions/17943496/declare-abstract-signal-in-interface-class/17943699#17943699 – 2014-12-08 15:41:25