2014-11-12 6 views
0

장면에서 특정 항목을 찾아서 제거하는 방법. 그래픽 항목을 선언하고 장면에 추가했습니다. 이제 특정 경우 장면에서 항목을 제거해야하지만 현장에서 항목을 제거하기 전에 항목이 장면에 추가되는지 여부를 알고 싶습니다. >의 selectedItem()리스트 -장면에서 항목을 찾는 방법

항목이 그래서 나는 장면을 사용할 수없는 선택하지 않은
"QGraphicsScene::removeItem: item 0x121c520's scene (0x0) is different from this scene (0x1143850)" 

() : 나는 장면에 추가되지 않습니다 항목을 제거하려고하면, 나는 다음 오류가 발생합니다.

답변

2

QGraphicsItem::scene()에서 호출 된 포인터를 확인할 수 있습니다. 장면을 반환하거나 장면에 없으면 NULL을 반환합니다.

// assuming item is a class derived from QGraphicsItem 
if(item->scene() != nullptr) // nullptr from C++ 11, else use NULL 
{ 
    // item is in a scene 
} 
+1

감사합니다. Merlin. 나는 그것을 시험했다. 그것은 잘 작동하고 있습니다 .. 이전에 나는 scene :: itemAt (pos)를 확인하고 그래픽 타입을 검사하려고 시도했다. 쉽고 깨끗하다. 다시 한 번 감사드립니다. – Wagmare

+0

5 분 후에 답변을 수락합니다. 나는 지금 받아 들일 수 없기 때문에. – Wagmare

+1

문제가 없으면 itemAt (pos)가 작동하지 않습니다. 항목이 장면에있는 경우 항목이있는 위치를 pos라고 가정하기 때문입니다. 해당 위치에 있지 않으면 장면에있을 수 있지만 false를 반환합니다. – TheDarkKnight

관련 문제