def visualRect(self, option): """ Overrides base sizeHint visualRect function Returns the visual rect for the item :param option: QStyleOptionViewItem :return: QRect """ rect = QRect(option.rect) rect.setX(self.PADDING_LEFT * self.dpi()) rect.setWidth(self.sizeHint().width()) return rect
def paint_icon(self, painter, option, index, align=None): """ Draws the icon for the item :param painter: QPainter :param option: QStyleOptionViewItem :param index: int :param align: Qt.Align """ column = index.column() pixmap = self.pixmap(column) if not pixmap: return rect = self.icon_rect(option) pixmap = self._scale_pixmap(pixmap, rect) pixmap_rect = QRect(rect) pixmap_rect.setWidth(pixmap.width()) pixmap_rect.setHeight(pixmap.height()) align = align or Qt.AlignHCenter | Qt.AlignVCenter x, y = 0, 0 align_bottom_a = Qt.AlignBottom | Qt.AlignLeft align_bottom_b = align == Qt.AlignBottom | Qt.AlignHCenter or align == Qt.AlignBottom | Qt.AlignRight align_h_center_a = Qt.AlignHCenter or align == Qt.AlignCenter align_h_center_b = align == Qt.AlignHCenter | Qt.AlignBottom or align == Qt.AlignHCenter | Qt.AlignTop align_v_center_a = align == Qt.AlignVCenter | Qt.AlignLeft or align == Qt.AlignVCenter | Qt.AlignRight align_v_center_b = Qt.AlignVCenter or align == Qt.AlignCenter is_align_bottom = align == align_bottom_a or align_bottom_b is_align_h_center = align == align_h_center_a or align_h_center_b is_align_v_center = align == align_v_center_a or align_v_center_b if is_align_h_center: x += float(rect.width() - pixmap.width()) / 2 elif is_align_v_center: y += float(rect.height() - pixmap.height()) / 2 elif is_align_bottom: y += float(rect.height() - pixmap.height()) pixmap_rect.translate(x, y) painter.drawPixmap(pixmap_rect, pixmap)