Beispiel #1
0
    def brushChanged(self):
        style = QtCore.Qt.BrushStyle(
            int(
                self.brushStyleComboBox.itemData(
                    self.brushStyleComboBox.currentIndex(), IdRole)))

        if style == QtCore.Qt.LinearGradientPattern:
            linearGradient = QtGui.QLinearGradient(0, 0, 100, 100)
            linearGradient.setColorAt(0.0, QtCore.Qt.white)
            linearGradient.setColorAt(0.2, QtCore.Qt.green)
            linearGradient.setColorAt(1.0, QtCore.Qt.black)
            self.renderArea.setBrush(QtGui.QBrush(linearGradient))
        elif style == QtCore.Qt.RadialGradientPattern:
            radialGradient = QtGui.QRadialGradient(50, 50, 50, 50, 50)
            radialGradient.setColorAt(0.0, QtCore.Qt.white)
            radialGradient.setColorAt(0.2, QtCore.Qt.green)
            radialGradient.setColorAt(1.0, QtCore.Qt.black)
            self.renderArea.setBrush(QtGui.QBrush(radialGradient))
        elif style == QtCore.Qt.ConicalGradientPattern:
            conicalGradient = QtGui.QConicalGradient(50, 50, 150)
            conicalGradient.setColorAt(0.0, QtCore.Qt.white)
            conicalGradient.setColorAt(0.2, QtCore.Qt.green)
            conicalGradient.setColorAt(1.0, QtCore.Qt.black)
            self.renderArea.setBrush(QtGui.QBrush(conicalGradient))
        elif style == QtCore.Qt.TexturePattern:
            self.renderArea.setBrush(
                QtGui.QBrush(QtGui.QPixmap(":/images/brick.png")))
        else:
            self.renderArea.setBrush(QtGui.QBrush(QtCore.Qt.green, style))
    def paintEvent(self, event):
        painter = qg.QPainter(self)
        painter.setRenderHint(painter.Antialiasing)
        rect = event.rect()

        gauge_rect = qc.QRect(rect)
        size = gauge_rect.size()
        pos = gauge_rect.center()
        gauge_rect.moveCenter(
            qc.QPoint(pos.x() - size.width(),
                      pos.y() - size.height()))
        gauge_rect.setSize(size * .9)
        gauge_rect.moveCenter(pos)

        refill_rect = qc.QRect(gauge_rect)
        size = refill_rect.size()
        pos = refill_rect.center()
        refill_rect.moveCenter(
            qc.QPoint(pos.x() - size.width(),
                      pos.y() - size.height()))
        # smaller than .9 == thicker gauge
        refill_rect.setSize(size * .9)
        refill_rect.moveCenter(pos)

        painter.setPen(qc.Qt.NoPen)

        painter.drawPixmap(rect, self._bg)

        painter.save()
        grad = qg.QConicalGradient(qc.QPointF(gauge_rect.center()), 270.0)
        grad.setColorAt(.75, qc.Qt.green)
        grad.setColorAt(.5, qc.Qt.yellow)
        grad.setColorAt(.25, qc.Qt.red)
        painter.setBrush(grad)
        painter.drawPie(gauge_rect, 225.0 * 16, self._value * 16)
        painter.restore()

        painter.setBrush(qg.QBrush(self._bg.scaled(rect.size())))
        painter.drawEllipse(refill_rect)

        super(GaugeWidget, self).paintEvent(event)