Search code examples
pythongradientpysidelinear-gradientsqgraphicsitem

Add gradient ramp to QGraphicsItem


How to add QLinearGradient() to Qrect(). I can add only solid color as Qt.black etc. The example code:

class ItemClass(QGraphicsItem):
    def __init__()
        super(ItemClass, self).__init__()
           # 

    def boundingRect(self):
        return QRectF(x, y, w, h)

    def paint(self, painter, opt, w):
        rec = self.boundingRect()
        painter.fillRect(rec, #Here I need gradient ramp)

Solution

  • You can directly pass the QLinearGradient as shown below:

    class ItemClass(QGraphicsItem):
        def boundingRect(self):
            x, y, w, h = -25, -25, 50, 50
            return QRectF(x, y, w, h)
    
        def paint(self, painter, opt, w):
            rect = self.boundingRect()
            lgrad = QLinearGradient(rect.topLeft(), rect.bottomLeft())
            lgrad.setColorAt(0.0, Qt.red);
            lgrad.setColorAt(1.0, Qt.yellow)
            painter.fillRect(rect, lgrad)
    

    enter image description here