PyQt:在QListWidget项的右侧添加图标

时间:2016-10-09 07:39:45

标签: qt pyqt icons qlistwidget

在QlistWidget中,使用listItem.setIcon(qIcon)时,图标会放在列表项的左侧。如何让它显示在右侧,如下所示?

enter image description here

另一个问题。如何从项目中删除图标?

2 个答案:

答案 0 :(得分:3)

使用简单的自定义项目委托可以很容易地完成:

class ItemDelegate(QtGui.QStyledItemDelegate):
    def paint(self, painter, option, index):
        option.decorationPosition = QtGui.QStyleOptionViewItem.Right
        super(ItemDelegate, self).paint(painter, option, index)

class MainWindow(QtGui.QMainWindow, Ui_MainWindow):
    def __init__(self):
        ...
        self.delegate = ItemDelegate()
        self.listWidget.setItemDelegate(self.delegate)

要从项目中删除图标,只需将其设置为空QIcon

listItem.setIcon(QtGui.QIcon())

答案 1 :(得分:1)

为此,您需要提供自己的项目委托,以便按照您的意愿绘制项目数据。

请参阅QAbstractItemView::setItemDelegate()

您可以使用QStyledItemDelegate作为基类,让paint()处理除Qt::DecorationRole(图标)以外的所有方面并自行绘制。