在QlistWidget中,当使用 listItem.setIcon(qIcon) 时,图标将放在列表项的左侧 . 如何让它显示在右侧,如下所示?
listItem.setIcon(qIcon)
另一个问题 . 如何从项目中删除图标?
使用简单的自定义项目委托可以很容易地完成此操作:
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 :
QIcon
listItem.setIcon(QtGui.QIcon())
为此,您需要提供自己的项目委托,以便根据需要绘制项目数据 .
见 QAbstractItemView::setItemDelegate() .
QAbstractItemView::setItemDelegate()
你可以使用 QStyledItemDelegate 作为你的基类,让它 paint() 处理除 Qt::DecorationRole (图标)以外的所有方面并自己绘制 .
QStyledItemDelegate
paint()
Qt::DecorationRole
2 回答
使用简单的自定义项目委托可以很容易地完成此操作:
要从项目中删除图标,只需将其设置为null
QIcon
:为此,您需要提供自己的项目委托,以便根据需要绘制项目数据 .
见
QAbstractItemView::setItemDelegate()
.你可以使用
QStyledItemDelegate
作为你的基类,让它paint()
处理除Qt::DecorationRole
(图标)以外的所有方面并自己绘制 .