def paint(self, painter, opts, index): currentData = index.data(self._role) try: ratio = float(currentData) except: super(ResourceDelegate, self).paint(painter, opts, index) return text = "%0.2f%%" % (ratio * 100) opt = QtGui.QStyleOptionViewItemV4(opts) opt.displayAlignment = QtCore.Qt.AlignRight | QtCore.Qt.AlignVCenter grad = QtGui.QLinearGradient(opt.rect.topLeft(), opt.rect.topRight()) # darkEnd = QtCore.Qt.transparent darkEnd = self.COLOR_BG end = darkEnd if ratio == 1: darkEnd = self.COLOR_OK end = darkEnd elif ratio <= self._crit: darkEnd = self.COLOR_CRITICAL end = self.COLOR_CRITICAL elif ratio <= self._warn: darkEnd = self.COLOR_WARN end = self.COLOR_WARN grad.setColorAt(0.0, self.COLOR_OK) grad.setColorAt(min(ratio, 1.0), self.COLOR_OK) grad.setColorAt(min(ratio + .01, 1.0), end) grad.setColorAt(1.0, darkEnd) self.drawBackground(painter, opt, index) painter.fillRect(opt.rect, QtGui.QBrush(grad)) self.drawDisplay(painter, opt, opt.rect, text) state_bg = index.data(QtCore.Qt.BackgroundRole) if state_bg: painter.setBrush(QtCore.Qt.NoBrush) pen = QtGui.QPen(state_bg) pen.setWidth(2) painter.setPen(pen) painter.drawRect(opt.rect)
def paint(self, painter, option, index): if not index.isValid(): QtGui.QStyledItemDelegate.paint(self, painter, option, index) return ## Broken in PySide. opt = QtGui.QStyleOptionViewItemV4(option) self.initStyleOption(opt, index) # Broken in pyside 1.1.2 #if opt.state & QtGui.QStyle.State_Selected: # painter.fillRect(opt.rect, opt.palette.highlight()) rect = opt.rect rect.adjust(self.Margins[0], self.Margins[1], -self.Margins[2], -self.Margins[3]) data = index.data() painter.save() painter.setRenderHints(painter.HighQualityAntialiasing | painter.SmoothPixmapTransform | painter.Antialiasing) painter.setPen(self.__PEN) if data[1] == 0: painter.setBrush(self.__C1) painter.drawRoundedRect(rect, 3, 3) else: ratio = data[0] / float(data[1]) painter.setBrush(self.__C1) painter.drawRoundedRect(rect, 3, 3) rect.setWidth(ratio * rect.width()) painter.setBrush(self.__C2) painter.drawRoundedRect(rect, 3, 3) painter.restore()