首页 文章

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

提问于
浏览
2

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

enter image description here

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

2 回答

  • 1

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

    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)
    

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

    listItem.setIcon(QtGui.QIcon())
    
  • 3

    为此,您需要提供自己的项目委托,以便根据需要绘制项目数据 .

    QAbstractItemView::setItemDelegate() .

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

相关问题