공통 인터페이스로 위젯 전체를 제공하기 위해 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 –