私は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クラスが純粋な仮想である場合(この場合は該当しない)、この問題は簡単に解決できることがわかります。
可能な解決策は、ここでの問題は、私はすでにQWidgetから継承したコードの多くを持っていることであり、その苦痛にそれをハックする。別の方法があります
class Interface: public QWidget {
Q_OBJECT
signals:
void IconChanged(QIcon);
void titleChanged(QString);
}
class Widget1: public Interface {
}
でしょうか?
http://stackoverflow.com/questions/17943496/declare-abstract-signal-in-interface-class/17943699#17943699 –