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角色的數據

使用項的setData( 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)

運行截圖:
在這裏插入圖片描述
其實還有個類似的方法,就是使用model的setData( QModelIndex,QtCore.QVariant(icon), Qt.DecorationRole)方法,當選擇操作時要更改圖標文件可以使用這種方法。只要在方法中獲取到modelIndex就可以調用該方法。

老猿Python,跟老猿學Python!

發佈了623 篇原創文章 · 獲贊 3419 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章