2014-12-27 8 views
1

은 QObjects 및 (예를 들어) QGraphicsWidgets와 같은 트리 구조를 가질 수 있습니까? 나는이 같은 초기화 목록을 쓸 수 없습니다 의미 :QObject의 자식 인 QGraphicsWidget

class MyButton : public QGraphicsWidget 
{ 
    Q_OBJECT 
public: 
    MyButton(int buttonId, QObject *parent = 0) : QObject(parent) 
    { 
    } 

다음은,

myButton = new MyButton(id, myObject); 

어떻게해야 .setParent 또는 무엇처럼?

업데이트 : 난 당신이 그래픽 장면에서 상위/하위 계층의 부모와 parent item QObject를 같이 parent 혼란 생각

class myObject : public QObject 
{ 
    Q_OBJECT 
public: 
    MyObject(QObject *parent = 0) : QObject(parent) { 
     } 

    MyButton *myButton; 

    void showButton(){ 
     myButton = new MyButton(id, this); //no matching function for call to 'MyButton::MyButton(MyObject* const)' 
//note: no known conversion for argument from 'MyObject* const' to 'QGraphicsObject*' 
    } 
}; 

답변

1

: 실제 할당을 참조하십시오. 전자를 원할 경우 보통 setParent 메커니즘을 사용해야합니다.

어느 쪽이든, 그 기본 클래스 건설 시도가 잘못되었습니다. 이로 교체 :

MyButton(int buttonId, QGraphicsItem *parent = 0) : QGraphicsWidget(parent) 

Futhermore을, 당신은 Qt를 5 사용하는 경우, 당신은 Q_NULLPTR 대신 0, NULL, nullptr 및 기타 변종을 확인하실 수 있습니다.

그래픽 항목을 부모로 만들려면 QGraphicsItemQObject을 모두 상속하는 QGraphicsObject을 사용해야합니다. 양육 목적으로 사용할 수 있습니다.

또한 QGraphicsWidgetQGraphicsObject을 상속하므로 양육 메커니즘에 직접 적용될 수 있습니다.

+0

아니요, 답을 표시하기 전에 몇 가지 해결 방법이 필요했습니다. 하지만 아마 당신 말이 맞아요. 그러한 계층을 구축 할 방법이 없습니다. –

+0

@DensiTensy : 대답에 쓰인대로 setParent가 있습니다. :) – lpapp