2012-04-23 16 views
8

おそらくトリック質問ですが、答えが見つかりません。QGraphicsItemが選択されたときに呼び出されるメソッド

QGraphicsItemがいつ選択されるのかを知る必要があります。呼び出されるメソッドがなければなりません。

私はQGraphicsItem::itemChange()を知っていますが、あまりにも頻繁に呼び出されています。

もっと良い方法はありますか?

THX

編集:この

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

で、私はすべての選択変更の二つの呼び出しを取得します。

答えて

12

あなたはQGraphicsItem :: itemChange方法で考慮にvalueを取る必要があります。あなたはすべての[選択した項目](http://qt-project.org/doc/qt-5/qgraphicsscene.html#selectedItems]を反復処理する必要があると思います

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私が見つけたものよりも優れています。if&this.isSelected()をifに追加してください。 –

0
+0

:何が欲しいのは、おそらくこのようなものです)、問題の[selected](http://qt-project.org/doc/qt-5/qgraphicsitem.html#setSelected)のものを手動で設定します。 – ssc

関連する問題