2012-12-24 9 views
11

में qtransform क्या है I कस्टम QGraphicsItem बनाते हैं। और boundingRect() और paint() को ओवरराइट करें।QGraphicsScene :: itemAt()

QRectF myTile::boundingRect() const 
{ 
    return QRectF(xPos*10, yPos*10, 10, 10); 
} 

void myTile::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) 
{ 
    QRectF rec = boundingRect(); 
    int gvi = value * 255; 
    QColor gv(gvi, gvi, gvi, 255); 
    QBrush brush(gv); 
    painter->fillRect(rec, brush); 
    painter->drawRect(rec); 
} 

तब मैं किसी दृश्य में आइटम जोड़ने के लिए addItem() का उपयोग करता हूं। अब मैं इसे अपनी स्थिति से दृश्य से प्राप्त करना चाहता हूं। मुझे itemAt फ़ंक्शन मिल गया है। लेकिन समस्या यह है कि मुझे नहीं पता कि const QTransform & deviceTransform क्या है। QTransform के लिए मुझे क्या उपयोग करना चाहिए?

क्योंकि मैंने QGraphicsItem में कोई भी परिवर्तन लागू नहीं किया है। यह मुझे भ्रमित करता है।

उत्तर

4
QGraphicsItem * QGraphicsScene::itemAt (const QPointF & position, const QTransform & deviceTransform) const 

निर्दिष्ट स्थान पर सर्वोच्च दिखाई आइटम रिटर्न, या 0 यदि वहाँ इस स्थिति में कोई आइटम नहीं है। deviceTransform परिवर्तन है जो दृश्य पर लागू होता है, और में दृश्य प्रदान करने की आवश्यकता है, दृश्य में वे आइटम होते हैं जो परिवर्तनों को अनदेखा करते हैं। यह कार्य Qt 4.6 में पेश किया गया था।

तो मैं कहूंगा कि, अगर आप कुछ आइटम्स को बदलने और दूसरों की अनदेखी करने की जरूरत है, तो आप बस भी बेहतर QGraphicsView::transform() constQTransform() का डिफ़ॉल्ट मान या के साथ जा सकते हैं।

soo long zai

+0

दिमाग हालांकि एक QGraphicsScene में एक से अधिक दृश्य हो सकते हैं। तो 'डिवाइस ट्रान्सफॉर्म' का मान संदर्भ पर निर्भर करता है। उदाहरण के लिए, एक माउस इवेंट हैंडलर में आपको यह पता लगाना होगा कि घटना किस घटना से आई थी। [यह टिप्पणी] देखें (http://stackoverflow.com/questions/16919819/itemat-not-returning-custom-qgraphicsitem#comment24426364_16921083)। –

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