मैं अपने PyQt5 एप्लिकेशन में ऐप्पल रेटिना डिस्प्ले के लिए समर्थन जोड़ रहा हूं। जब मैं सफलतापूर्वक उच्च संकल्प माउस रेंडर करने के लिए (मेरे सारे .png
फ़ाइलों को @ 2x प्रत्यय जोड़ने और मेरी QApplication
में Qt.AA_UseHighDpiPixmaps
की स्थापना करके) में कामयाब रहे, मैं एक QGraphicsScene
+ QGraphicsView
में उच्च संकल्प QGraphicsItem
प्रतिपादन में कुछ समस्याएं हो रही हैं।ऐप्पल रेटिना डिस्प्ले पर QGraphicsItem प्रतिपादन
अपने आवेदन में, अन्य .png
फ़ाइलें लोड से, मैं भी उत्पन्न कई QPixmap
मेरी आत्म (उन्हें एक Icon
में embedding), प्रतीकों में से पैलेट उपयोगकर्ता आरेख QGraphicsView
में प्रदान की गई करने के लिए नए आकार को जोड़ने के लिए उपयोग कर सकते हैं का निर्माण करने की , यानी:
def icon(cls, width, height, **kwargs):
"""
Returns an icon of this item suitable for the palette.
:type width: int
:type height: int
:rtype: QIcon
"""
icon = QIcon()
for i in (1.0, 2.0):
# CREATE THE PIXMAP
pixmap = QPixmap(width * i, height * i)
pixmap.setDevicePixelRatio(i)
pixmap.fill(Qt.transparent)
# PAINT THE SHAPE
polygon = cls.createPolygon(46, 34)
painter = QPainter(pixmap)
painter.setRenderHint(QPainter.Antialiasing)
painter.setPen(QPen(QColor(0, 0, 0), 1.1, Qt.SolidLine))
painter.setBrush(QColor(252, 252, 252))
painter.translate(width/2, height/2)
painter.drawPolygon(polygon)
# PAINT THE TEXT INSIDE THE SHAPE
painter.setFont(Font('Arial', 11, Font.Light))
painter.drawText(polygon.boundingRect(), Qt.AlignCenter, 'role')
painter.end()
# ADD THE PIXMAP TO THE ICON
icon.addPixmap(pixmap)
return icon
जो मेरे पैलेट (हीरा एक) में प्रतीकों में से एक उत्पन्न करता है।
हालांकि जब मैं अपने QGraphicsScene
के तत्वों, एक QGraphicsView
में दिखाया गया है कि वे कम संकल्प में गाया जाता है जोड़ें:
def paint(self, painter, option, widget=None):
"""
Paint the node in the diagram.
:type painter: QPainter
:type option: QStyleOptionGraphicsItem
:type widget: QWidget
"""
painter.setPen(self.pen)
painter.setBrush(self.brush)
painter.drawPolygon(self.polygon)
आकार में पाठ सही ढंग से प्रदान की गई है, और मैं इसे खुद चित्रित नहीं कर रहा हूं क्योंकि यह QGraphicsTextItem
है जिसमें मेरा QGraphicsItem
माता-पिता के रूप में है।
समस्या यह है कि QPixmap
के लिए मैं QGraphicsItem
के लिए डिवाइस पिक्सेल अनुपात सेट कर सकता हूं। क्या मैं कुछ भूल रहा हूँ?
मैं क्यूटी 5.5.1 और एसआईपी 4.18 के खिलाफ निर्मित पीईक्यूटी 5.5.1 का उपयोग कर रहा हूं (5.6 का उपयोग नहीं कर रहा क्योंकि मुझे एप्लिकेशन स्टार्टअप पर कई क्रैश का सामना करना पड़ रहा है जिसे मैंने पहले ही पीईक्यूटी देवों को बताया है)।
मुझे लगता है कि मुझे ब्लॉग पोस्ट याद आया, भले ही मैं क्यूटी 5.5/5.6 में उच्च डीपीआई समर्थन के बारे में खबर ढूंढ रहा हूं। मुझे लगता है कि मुझे सिर्फ पीईक्यूटी 5.6 में एक फिक्स के लिए इंतजार करना है। –
भले ही आपका उत्तर मेरी समस्या का समाधान नहीं करता है (चूंकि यह क्यूटी के नवीनतम संस्करण में अपग्रेड किए बिना स्पष्ट रूप से हल करने योग्य नहीं है) मैं आपको प्रयास के लिए बक्षीस दूंगा। –