2012-04-23 9 views
8

아마도 트릭 질문이지만 대답을 찾을 수 없습니다.QGraphicsItem을 선택할 때 호출되는 메서드

언제 QGraphicsItem이 선택되는지 알아야합니다. 호출되는 메소드가 있어야합니다.

나는 QGraphicsItem::itemChange()을 알고 있지만 너무 자주 전화를 건다.

더 좋은 방법이 있습니까?

들으

편집 : 나는 두 통화의 모든 선택 변경을 얻을이

if(change == ItemSelectedChange && scene()){ 
    cout << "haha " << i++ << endl; 
} 

으로.

답변

12

당신은 QGraphicsItem :: itemChange 방법에서 고려 value을해야합니다. 당신이 원하는 것은 아마이 같은 것입니다 :

QVariant YourItem::itemChange(GraphicsItemChange change, const QVariant &value) 
{ 
    if (change == QGraphicsItem::ItemSelectedChange) 
    { 
     if (value == true) 
     { 
      // do stuff if selected 
     } 
     else 
     { 
      // do stuff if not selected 
     } 
    } 

    return QGraphicsItem::itemChange(change, value); 
} 
+0

Thx 내가 발견 한 것보다 효과적입니다. && this.isSelected()를 if에 추가하십시오. –

0
+0

당신은 반복해야 할 것 모두 [선택 항목] (http://qt-project.org/doc/qt-5/qgraphicsscene.html#selectedItems]) 그리고 질문 [selected] (http://qt-project.org/doc/qt-5/qgraphicsitem.html#setSelected)에있는 것들을 수동으로 설정하십시오. – ssc

관련 문제