zoukankan      html  css  js  c++  java
  • 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!

  • 相关阅读:
    【流水账】2021-06-19 Day-09
    【流水账】2021-06-18 Day-08
    【流水账】2021-06-16 Day-06
    【流水账】2021-06-15 Day-05
    .Net调用Java的实现方法
    优先队列的实例题
    栈的相关程序题
    重载函数
    卡特兰数
    关于全排列的递归
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/12235063.html
Copyright © 2011-2022 走看看