मेरे पास एक QGraphicsTextItem है जो QGraphicsItem पर अभिभावित है। मैं QGraphicsTextItem को हमेशा QGraphicsItem के ऊपर सीधे रहने के लिए चाहता हूं, लेकिन मैं यह भी चाहता हूं कि स्केल फैक्टर 1 से नीचे हो जाने पर पाठ एक ही आकार में बने रहें, यानी पाठ आकार के आकार में रहता है, भले ही मूल ग्राफिक्स आइटम छोटा स्केल किया गया है। मैंने पाया है कि QGraphicsItem::ItemIgnoresTransformations
ध्वज को सही करने के लिए जब स्केल कारक 1 से नीचे है, आकार को बनाए रखने के लिए चाल है।QGraphicsItem लागू करने के बाद सापेक्ष बच्चे की स्थिति को बनाए रखना :: आइटम इग्निर्स ट्रान्सफॉर्मेशन
लेकिन मुझे टेक्स्ट की स्थिति हमेशा QGraphicsItem से ऊपर रहने के लिए एक रास्ता नहीं मिल रहा है। क्या इसे करने का कोई तरीका है? मैंने deviceTransform()
फ़ंक्शन का उपयोग करने का प्रयास किया, लेकिन पाठ अभी भी QGraphicsItem से बाहर चला गया क्योंकि मैंने स्क्रॉल किया था। इससे भी बदतर बात यह थी कि कुछ पाठ वस्तुओं ने "चिल्लाया" शुरू किया, यानी उन्होंने लगातार अपनी स्थिति को इतनी थोड़ी-थोड़ी बदलना शुरू कर दिया, ताकि ऐसा लगता है कि वे हिल रहे थे। यदि यह वह कार्य है जिसे मुझे उपयोग करने की आवश्यकता है, तो मुझे लगता है कि मुझे नहीं पता कि इसका सही तरीके से उपयोग कैसे किया जाए।
मैं एक QGraphicsTextItem जोड़ दिया है मेरी QGraphicsItem के निर्माता में:
fTextItem = new QGraphicsTextItem(getName(), this);
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations);
यहाँ QGraphicsItem का रंग समारोह से कोड का टुकड़ा है
qreal lod = painter->worldTransform().m22();
if(lod <= 1.0) {
fTextItem-setFlag(QGraphicsItem::ItemIgnoresTransformations);
fTextItem->setPos(fTextItem->deviceTransform(view-viewportTransform()).inverted().map(view->mapFromScene(mapToScene(0,0))));
} else {
fTextItem->setFlag(QGraphicsItem::ItemIgnoresTransformations, false);
fTextItem->setPos(0, 0);
}
आप सेट नहीं करना चाहिए QGraphicsTextItem झंडा वस्तुओं QGraphicsItem के बजाय माता पिता परिवर्तन की अनदेखी करने के? – ArmenB