PyQt(Python+Qt)学习随笔:model/view架构中支持QListView列表中展示图标的两种方法

在QListView列表视图中的项不但可以展示文字,也可以展示图标和复选框,同时可以指定项是否可以拖拽、选择、编辑。有两种方法支持在项中展示图标,一种是使用QStandardItem创建项时通过QIcon传递图标文件参数,一种是使用QStandardItem()创建空项后通过setData指定图标文件为Qt.DecorationRole角色的数据。

1、使用QStandardItem(QIcon icon, str text)创建项

下面的代码支持将指定目录的图象文件的文件名和图象在视图中展示:

    def initIconModel(self):
        self.model = QStandardItemModel()

        ICon1 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\add.png"),'add.png')
        ICon2 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\application_windows_add.png"), 'application_windows_add.png')
        ICon3 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\save.png"), 'save.png')
        ICon4 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\search.png"), 'search.png')
        ICon5 = QStandardItem(QIcon(r"F:\学习\python\资源\图像文件\stop.gif"), 'stop.gif')

        self.model.appendRow(ICon1)
        self.model.appendRow(ICon2)
        self.model.appendRow(ICon3)
        self.model.appendRow(ICon4)
        self.model.appendRow(ICon5)
        self.listView.setModel(self.model)

运行后的界面初始化截图如下:
在这里插入图片描述

2、使用QStandardItem()创建空项后通过setData指定图标文件为Qt.DecorationRole角色的数据

使用Model的setData(QModelIndex, QtCore.QVariant(icon), Qt.DecorationRole)方法,对应数据角色使用 Qt.DecorationRole。示例代码:

    def initIconModel(self):
        self.model = QStandardItemModel()
        ICon1 = QStandardItem('add.png')
        ICon1.setData(QtCore.QVariant(QIcon(r"F:\学习\python\资源\图像文件\add.png")),Qt.DecorationRole)
        ICon2 = QStandardItem('save.png')
        ICon2.setData(QtCore.QVariant(QIcon(r"F:\学习\python\资源\图像文件\save.png") ),Qt.DecorationRole)
        self.model.appendRow(ICon1)
        self.model.appendRow(ICon2)
        self.listView.setModel(self.model)

运行截图:
在这里插入图片描述

老猿Python,跟老猿学Python!

发布了579 篇原创文章 · 获赞 3398 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/LaoYuanPython/article/details/104050452