2017-09-07 7 views
0

에 업데이 트를 해제하는 방법 내가 MyQQuickItemupdatePaintNode 해고되도록 별도의 UI에 뭔가를하고있는 중이 야QQuickItem

// Class 
class MyQQuickItem : public QQuickItem { 
    Q_OBJECT 
} 

// updatePaintNode in cpp function 
QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) { 

    // draw UI logic 
    return node; 
} 

// QML component 
MyQQuickItem { 
    id: my_quick 
    objectName: "myquickitem" 
    width : 500 
    height : 500 
} 

QQuickItem 파생 클래스에게 있습니다. 내가 그렇게 같은 CPP 측에 MyQQuickItem에 대한 포인터,

QQuickItem * my_quick_item_ptr = m_qml_engine->rootObjects()[0]->findChild<QQuickItem*>("myquickitem"); 

이있는 경우 어떻게 그것을하지 않을 때 호출하기에서 MyQQuickItem의 updatePaintNode을 해제 할 수 있습니다?
보조 질문 : 예인 경우 다시 복원하는 방법 은요?

답변

1

updatePaintNode()이 호출 된 경우 실제로 수정할 의도가없는 장면 그래픽 내부 자료 일 가능성이 큽니다.

어쩌면 같은 덜 침습적 뭔가 일을 시도 :이 작업을 수행 할 수있는`QQuickItem` 클래스에서 뭔가

QSGNode * MyQQuickItem::updatePaintNode(QSGNode * oldNode, UpdatePaintNodeData * updatePaintNodeData) { 
    if (doNotUpdate) return oldNode; 
    // draw UI logic 
    return node; 
} 
+0

가 무엇입니까? 내 자신의'doNotUpdate' 기반 플래그 관리를 사용하는 것보다? –

+0

존재하지 않는 기능을 용이하게하기위한 플래그가 있을지는 의문입니다.) 어쨌든 클래스를 확장 할 때부터 할 수있는 추가 속성 중 하나입니다. 예상대로 작동하지 않을 가능성이 있습니다. 방금 아이디어로 제시하고 시도하여 결과를보고하므로 좋지 않은 경우 답변을 삭제할 수 있습니다. – dtech