我想在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