2012-04-23 2 views
8

शायद एक चाल सवाल है, लेकिन मुझे जवाब नहीं मिल रहा है।क्यूग्राफिक्स इटैम का चयन कब किया जाता है जब

मुझे पता होना चाहिए कि एक QGraphicsItem कब चुना जाता है। एक विधि होना चाहिए जिसे बुलाया जाता है।

मुझे QGraphicsItem::itemChange() पता है लेकिन इसे अक्सर कहा जाता है।

क्या कोई बेहतर तरीका है?

THX

संपादित करें: इस

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 मुझे जो मिला उससे बेहतर काम करता है: if.is में चयनित() चयनित()। –

0
+0

आप से अधिक पुनरावृति करना होगा सब [चयनित आइटम] (http://qt-project.org/doc/qt-5/qgraphicsscene.html#selectedItems]) और मैन्युअल रूप से प्रश्नों में [चयनित] सेट करें (http://qt-project.org/doc/qt-5/qgraphicsitem.html#set चयनित)। – ssc

संबंधित मुद्दे

 संबंधित मुद्दे