def set_text_image(self, text, color=Qt.gray): """ Set the item picture based on an SVG file created from the given text. :param text: Text to be rendered as SVG. :type text: str :param color: Font color :type color: QColor """ w, h = 200, 50 svg_path = self._gen_svg_path() svg_gen = QSvgGenerator() svg_gen.setFileName(svg_path) svg_gen.setTitle('QrBarCodeLayoutItem') svg_gen.setDescription('Image generated by QrBarCodeLayoutItem plugin') svg_gen.setSize(QSize(w, h)) svg_gen.setViewBox(QRect(0, 0, w, h)) # Paint text font = QFont('Arial', 14, QFont.Bold) p = QPainter() p.begin(svg_gen) p.setFont(font) p.setPen(color) p.drawText(QPointF(10, 20), text) p.end() # Set picture path self.setPicturePath(svg_path)
def _svgPaintDevice(self, name, sourceRect, targetRect): """Get QSvgGenerator as paint device""" generator = QSvgGenerator() generator.setDescription("This SVG was generated with the geoCore " "plugin of QGIS, written by T-Systems on site services GmbH") generator.setTitle("geoCore") generator.setSize(sourceRect.size().toSize()) generator.setViewBox(targetRect) generator.setFileName(name) return generator