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)