def paintEvent(self, event): QtWidgets.QWidget.paintEvent(self, event) #Skip this if too small, if splitter is all the way over painter = QtGui.QPainter(self) try: rect = self.contentsRect().adjusted(5, 5, -5, -5) painter.save() painter.fillRect(rect, QtGui.qApp.palette().color(QtGui.QPalette.Base)) if len(self.__history) > 1: stepWidth = rect.width() / float(len(self.__history) - 1) ratioHeight = (rect.height() - 2) / float(self.__max) # Box outline painter.setPen(QtCore.Qt.black) painter.drawRect(rect) painter.setPen(self.__color) points = QtGui.QPolygon(len(self.__history) + 2) # Bottom left #points.setPoint(0, rect.bottomLeft()) points.setPoint(0, rect.left() + 1, rect.bottom()) # All the data points num = 1 for i in range(len(self.__history)): points.setPoint( num, max(rect.x() + 1, rect.x() - 1 + stepWidth * i), rect.bottom() - ratioHeight * self.__history[i]) num += 1 # Bottom right points.setPoint(num, rect.bottomRight()) # Draw filled in painter.setBrush(self.__brush) painter.drawPolygon(points) # Draw subscription size line painter.setPen(QtCore.Qt.red) height = rect.bottom() - ratioHeight * self.__line painter.drawLine(rect.left() + 1, height, rect.right() - 1, height) finally: painter.restore() painter.end() del painter
def paint(self, painter, option, index): if index.data(QtCore.Qt.UserRole) == Constants.TYPE_HOST: hostItem = self.parent().itemFromIndex(index) host = hostItem.rpcObject painter.save() try: self._drawBackground(painter, option, index) if len(hostItem.coresHistory) > 1: stepWidth = option.rect.width() / float( len(hostItem.coresHistory) - 1) ratioHeight = (option.rect.height() - 2) / float( host.data.cores) painter.setPen(QtCore.Qt.black) painter.drawRect(option.rect) painter.setPen(self.__color) points = QtGui.QPolygon(len(hostItem.coresHistory) + 2) points.setPoint(0, option.rect.bottomLeft()) num = 1 for i in range(len(hostItem.coresHistory)): points.setPoint( num, option.rect.x() + stepWidth * i, option.rect.bottom() - ratioHeight * hostItem.coresHistory[i]) num += 1 points.setPoint(num, option.rect.bottomRight()) painter.setBrush(self.__brush) painter.drawPolygon(points) if option.state & QtWidgets.QStyle.State_Selected: self._drawSelectionOverlay(painter, option) finally: painter.restore() del painter else: AbstractDelegate.paint(self, painter, option, index)