向Qlistvi的项目添加图标

2024-10-01 13:35:24 发布

您现在位置:Python中文网/ 问答频道 /正文

直截了当地说,我想给Qlistview的项目添加图标。我一直在尝试setData,但没有成功。你知道吗

代码:

import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)
        iconroot = os.path.dirname(__file__)
        self.setFont(QtGui.QFont("Helvetica", 8, QtGui.QFont.Normal, italic=False)) 
        lay = QtWidgets.QVBoxLayout(self)

        self.listView = QtWidgets.QListView()
        lay.addWidget(self.listView)

        self.entry = QtGui.QStandardItemModel()
        self.listView.setModel(self.entry) 
        self.listView.setSpacing(5)

        for text in ("One", "two", "Three", "Four", 
                     "Five etc.."):
            it = QtGui.QStandardItem(text)
            self.entry.appendRow(it)
            it.setData(QtGui.QIcon(iconroot +'/images/flags'),QtCore.Qt.DecorationRole)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

像这样的愿望。。你知道吗

enter image description here


Tags: importselfinitossysitwidgetparent
1条回答
网友
1楼 · 发布于 2024-10-01 13:35:24

试试看:

import os
import sys
from PyQt5 import QtCore, QtGui, QtWidgets

class Widget(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent)

#        iconroot = os.path.dirname(__file__)

        self.setFont(QtGui.QFont("Helvetica", 8, QtGui.QFont.Normal, italic=False)) 
        lay = QtWidgets.QVBoxLayout(self)

        self.listView = QtWidgets.QListView()
        lay.addWidget(self.listView)

        self.entry = QtGui.QStandardItemModel()
        self.listView.setModel(self.entry) 
        self.listView.setSpacing(5)

#        for text in ("One", "two", "Three", "Four", 
        for i, text in enumerate(["One", "two", "Three", "Four",                          # +++
                                  "Five etc.."]):
            it = QtGui.QStandardItem(text)
            self.entry.appendRow(it)

#            it.setData(QtGui.QIcon(iconroot +'/images/flags'), QtCore.Qt.DecorationRole)
            it.setData(QtGui.QIcon(os.path.join('images', 'bao{}.png'.format(i))),        # +++
                                   QtCore.Qt.DecorationRole)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

enter image description here

相关问题 更多 >