【发布时间】:2023-03-19 18:05:01
【问题描述】:
【问题讨论】:
标签: qt pyqt icons qlistwidget
【问题讨论】:
标签: qt pyqt icons qlistwidget
为此,您需要提供自己的项目委托,该委托可以根据需要绘制项目数据。
见QAbstractItemView::setItemDelegate()。
您可能会使用QStyledItemDelegate 作为您的基类,并让其paint() 处理除Qt::DecorationRole(图标)之外的所有方面并自己绘制。
【讨论】:
def paint(self, painter, option, index):这样的函数签名覆盖paint方法@
setItemDelegate()。如果您查看链接的示例,那么lv = QListView() 行基本上就是从设计器文件生成的代码将完成的操作,有关创建和设置委托的行也适用于您
这可以通过一个简单的自定义 item-delegate 轻松完成:
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())
【讨论】: