2011-10-10 3 views
1

QWidget 및 모델 클래스에서 파생 된 클래스가 있습니다. 제 독서를 토대로 QObject에서 파생 된 모델 클래스를 가질 수 없습니다.Qt : 파생 클래스의 슬롯에 기본 클래스 메서드 가져 오기

class PageWidget : public QWidget, 
     public MyModelClass 
{ 
... 
}; 

모델 클래스 MyModelClass는 이미 setWidth (BOOL) 등의 속성을 설정하는 방법이있다. 그 방법을 슬롯으로 직접 사용할 수없는 것 같습니다. 내가 선언하는 경우 :

QObject :: connect (button, SIGNAl (dataChanged (bool)), this, SLOT (setWidth (bool)));

Qt는 런타임에 슬롯이 없음을 불평합니다. setWidth (bool). 각 메소드를 수동으로 MyWodget에 추가해야합니다. PageWidget은 MyModelClass와 동일한 메소드를 호출합니다.

모든 메소드를 다시 선언하지 않고 기본 메소드를 슬롯에 가져 오는 방법이 있습니까?

+1

예 : 다중 상속을 사용하지 마십시오 .--) 당신이 필요로 하시겠습니까? 특히 메소드 이름이 충돌하면 많은 고통을 느끼게됩니다. – Mat

답변

5

QMetaObject (슬롯을 사용할 수있는 Qt 파트)와 다중 상속은 섞이지 않습니다. "통과"슬롯을 만드는 해결책은이를 해결하는 방법입니다. 그러나 다중 상속을 수행 할 필요가 없다면 그렇게하지 않을 것입니다. 사물의 모습에서 볼 때, 위젯과 모델에서 파생 된 PageWidget이 이상하게 보입니다. 아마도 모델을 대신 포함하는 것이 더 합리적 일 것입니다.

+0

이것은 정확합니다. 두 QObject 인 두 클래스에서 상속하는 것은 불가능합니다. – Chris

관련 문제