PyQt:将图标添加到 QListWidget 项目的右侧
PyQt: Add icon to right side of QListWidget item
在 QlistWidget 中,当使用 listItem.setIcon(qIcon)
时,图标位于列表项的左侧。我怎样才能让它显示在右边,如下图所示?
还有一个问题。如何从项目中删除图标?
为此,您将需要提供自己的项目委托来绘制您想要的项目数据。
见QAbstractItemView::setItemDelegate()
。
您可以使用 QStyledItemDelegate
作为基础 class 并让它 paint()
处理 Qt::DecorationRole
(图标)以外的所有方面并自己绘制。
这可以通过简单的自定义项目委托轻松完成:
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())
在 QlistWidget 中,当使用 listItem.setIcon(qIcon)
时,图标位于列表项的左侧。我怎样才能让它显示在右边,如下图所示?
还有一个问题。如何从项目中删除图标?
为此,您将需要提供自己的项目委托来绘制您想要的项目数据。
见QAbstractItemView::setItemDelegate()
。
您可以使用 QStyledItemDelegate
作为基础 class 并让它 paint()
处理 Qt::DecorationRole
(图标)以外的所有方面并自己绘制。
这可以通过简单的自定义项目委托轻松完成:
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())