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

【QT】——QListWidget的使用 QListWidget 是qt中的列表框控件,它用于显示多个列表项,列表项对应的类是QListWidgetItem. 列表项中可以同时包含图片和文字。 阅读详情

在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!

PyQt5桌面GUI开发全解析:从核心原理到项目实战 桌面应用开发是软件工程的重要领域,其核心在于构建用户与系统交互的图形界面。PyQt5作为Python对Qt框架的完整绑定,继承了Qt近30年积累的跨平台能力与丰富组件库,通过信号槽机制实现高效的事件驱动编程。这一技术组合让开发者能够用Python快速构建专业级桌面软件,同时保持与原生C++应用相近的性能表现。在工程实践中,PyQt5特别适合数据处理工具、科学计算平台和工业控制软件的开发,其成熟的生态和稳定的API使其成为众多生产项目的首选。本文深入探讨PyQt5在GUI开发中的核心优势,并解析其与PySid 阅读详情

相关推荐

PyQt5桌面GUI开发:从信号槽到多线程的Python跨平台实践

桌面GUI开发是软件工程中的重要领域,它涉及创建用户可直接交互的图形界面应用程序。其核心原理在于事件驱动编程模型,通过响应用户输入和系统事件来更新界面状态。在技术价值层面,优秀的GUI框架能显著提升开发效率、增强应用稳定性和跨平台兼容性。Python作为主流编程语言,在数据分析、机器学习等领域广泛应用,而PyQt5正是连接Python生态与专业级桌面开发的关键桥梁。它基于成熟的Qt框架,通过信号与槽机制实现松耦合通信,支持模型/视图架构处理大数据展示,并提供了QThread解决方案来避免界面卡顿。这些特性使

weixin_34277853的博客 558

QListWidget组件功能

QListView::IconMode 是图标模式。QListView::ViewMode是一个枚举,两个取值。其中:QListView::ListMode 是列表模式。两种显示模式:列表模式,图标模式。

m0_72753035的博客 622

PyQt5入门指南:从环境搭建到界面开发与打包部署

图形用户界面(GUI)是连接用户与程序逻辑的桥梁,其核心在于将复杂的操作封装为直观的交互元素,如按钮和文本框,从而提升软件的易用性和专业性。在Python生态中,PyQt5作为Qt框架的Python绑定,凭借其强大的功能、跨平台特性和与操作系统的深度集成,成为开发专业级桌面应用的首选。它基于信号与槽的通信机制,实现了界面与业务逻辑的高效解耦,并通过布局管理器、丰富的控件库以及样式表(QSS),支持开发者构建规整、美观且响应迅速的界面。对于涉及数据处理或网络请求的耗时任务,PyQt5的多线程支持能有效防止界面

weixin_33766168的博客 354

Qt5.9中QTreeView添加图标用法

在QTreeView中,添加图标时,可以用QIcon语句,具体的用法如下:txtItem = new QStandardItem(QIcon(":/res/img/txt.png"),QStringLiteral("文本"));参考内容:

净无邪博客 7045

PyQt5桌面开发:从环境搭建到性能优化全指南

Python GUI开发中,PyQt5凭借其跨平台特性和强大的信号槽机制成为主流选择。作为Qt框架的Python绑定,PyQt5通过QSS样式表实现CSS式界面美化,其GPL授权模式对开发者友好。在工程实践中,PyQt5的环境配置涉及Python版本管理、核心组件版本控制及IDE工具链集成,其中conda虚拟环境和VSCode扩展配置是关键环节。针对实际开发痛点,本文详解了Qt Designer可视化设计、PyInstaller打包部署、多语言支持等进阶技巧,并结合pyqtgraph实时绘图、QML混合开发

weixin_30414305的博客 331

PyQt5桌面GUI开发全攻略:从安装到打包的实战避坑指南

桌面GUI开发是构建独立、交互式应用程序的核心技术,它通过图形用户界面连接用户与程序功能。其原理在于事件驱动编程模型,通过响应用户操作来更新界面状态。这项技术的价值在于能够创建无需浏览器、性能更优、体验更接近原生操作系统的工具软件,尤其适合开发数据管理工具、科学计算界面和内部业务系统等场景。PyQt5作为Python生态中成熟稳定的GUI框架,通过将强大的Qt C++库封装为Python绑定,为开发者提供了丰富的控件库和高效的信号槽机制。本文聚焦于PyQt5的实战应用,详细拆解了其安装部署、核心架构、界面设

weixin_34277853的博客 640

Qt Model/View 编程深度解析报告

本文介绍了Qt框架中的Model/View架构,该架构通过分离数据与视图解决了传统GUI开发中的数据冗余和同步问题。文章首先分析了传统基于项控件的局限性,指出其数据耦合导致的维护成本上升。随后阐述了Model/View对MVC模式的改进,合并视图和控制器角色并引入委托机制,形成了Model/View/Delegate范式。 核心内容围绕三大组件展开: 模型作为数据抽象层,通过QAbstractItemModel标准接口统一访问各类数据源,提供QAbstractListModel和QAbstractTable

greenspan的专栏 2180

Qt for Python开发指南:从PySide6入门到应用打包部署

桌面应用开发是软件开发中的重要领域,它涉及创建运行在用户本地计算机上的图形界面程序。其核心原理是通过GUI框架构建用户界面,处理事件循环以实现交互响应。在Python生态中,GUI开发的价值在于能够利用Python的简洁语法和丰富库资源快速构建跨平台应用。PySide6作为Qt官方Python绑定,采用LGPL协议解决了商业授权问题,为开发者提供了强大的Qt6框架能力。通过信号与槽机制实现对象间通信,结合多线程处理防止界面卡顿,开发者可以构建专业级桌面应用。本文以构建文本编辑器为例,详细解析PySide6模

weixin_34195546的博客 392

基于Python与PyQt5构建高性能图像查看器:交互式探索与工程实践

在图像处理与数据分析领域,高效浏览与管理大量图像文件是开发者、数据分析师和摄影师面临的常见挑战。传统命令行工具缺乏直观性,而专业软件往往过于臃肿。本文从图形用户界面(GUI)开发的基础概念切入,探讨如何利用Python生态与PyQt5框架构建轻量、快速的桌面应用。通过剖析**异步加载与缓存**机制和**Model-View架构**设计原理,阐述了如何实现流畅的缩略图浏览、交互式缩放平移等核心功能。该方案的技术价值在于平衡了性能与用户体验,特别适用于深度学习结果可视化、原始数据检查等场景,最终自然收敛到如何打

weixin_34195364的博客 390

基于Qt C++的轻量级图片浏览器开发:从架构设计到性能优化

在桌面应用开发领域,GUI框架的选择与性能优化是核心议题。Qt作为成熟的跨平台C++框架,其信号槽机制和图形视图体系为构建高性能应用提供了坚实基础。通过Model-View架构实现业务逻辑与界面解耦,能显著提升代码可维护性和扩展性。在图像处理场景中,高效的内存管理与资源加载是关键的技术价值所在,直接影响应用的响应速度和用户体验。例如,利用LRU缓存策略管理图像资源,并结合异步加载机制,可以有效解决大文件I/O导致的界面卡顿问题。这些技术广泛应用于需要本地文件管理和快速图像预览的客户端软件,如相册管理、设计素

399

使用PyQt实现QListView支持图标展示的方法

可以通过在model中添加QStandardItem对象,并在该对象中设置QIcon与QStandardItem.setText()来设置需要展示的图标和文本内容。在PyQt中,QListView作为常用的列表控件,我们通常需要在其中展示一些图标。QStyledItemDelegate是一个用于处理列表项数据的委托,可以通过继承该委托类实现自定义的QListView图标展示效果。以上就是QListView的两种图标展示方法,可以根据实际需求选用适合的方法实现自己想要的效果。

2301_78484069的博客 626

Qt开发入门:从零到跨平台GUI低手

Qt开发入门:从零到跨平台GUI低手

Yusei_0523的博客 553

QListView IconMode设置图标放大,整齐排列的处理方式

最近将一个文件管理器的图标显示代码修改了一下,原先显示很混乱,现在看来好了很多,先来看看效果: 下载地址:Qt5文件管理器这里主要讲一下怎么实现这个效果的: 如下代码,我们设置初始的GripSize为100x100,GripSize就是ListView在IConMode的视图情况下,每个Icon的显示框的大小,默认为0,即不设置,然后将Movement设置为捕获,相当于捕获网格边缘的意思,这样一来,就可以依附网格,之前没有设置这些参数,就导致了显示时的icon很乱,随意摆放了。 至于图标的大小显示,我

有问题或资源连接有缺失的可以私信公众号新潮看世界获取 2857

QT 用listveiw显示图片

很多的时候需要浏览图片,一般会使用listview 显示图片,接下来我用listview显示图片 代码如下: QStandardItem * s1; QStandardItem * s2; QStandardItem *s3; QStandardItemModel * model = new QStandardItemModel(this); ...

weixin_34043301的博客 1541

IC版图设计之OASIS文件格式详解

OASIS(Open Artwork System Interchange Standard)是继GDSII之后新一代的集成电路版图数据交换标准,由SEMI在2004年正式发布(SEMI标准号:SEMI P39)。高压缩率:相比GDSII可减少3-10倍文件体积扩展性强:支持纳米级工艺的复杂图形描述跨平台兼容:独立于EDA工具和操作系统安全增强:内置校验和与加密支持。

ZZcppc的博客 2443

终端效率神器:Tmux 安装与使用全指南

终端效率神器:Tmux 安装与使用全指南

身在被窝_心在编程 1359

PyQt6 QListWidget列表控件

PyQt6提供了两种列表,分别是QListWidget和QListView,其中,QListView是基于模型的,它是QListWidget的父类,使用QListView时,首先需要建立模型,然后再保存数据;而QListWidget是QListView的升级版本,它已经内置了一个数据存储模型QListWidgetItem,我们在使用时,不必自己建立模型,而直接使用addItem()或者addItems()方法即可添加列表项。所以在实际开发时,推荐使用QListWidget控件作为列表。

java1234的博客 1294

Python实战:3步搞定视频去重,告别重复文件烦恼(附完整代码)

本文提供了一套基于Python的视频去重实战方案,通过三步流程(抽帧、生成内容指纹、相似度比对)高效识别重复视频文件。文章详细介绍了使用dHash算法生成视频指纹的核心原理,并提供了完整的代码实现,帮助用户快速构建自己的视频去重工具,告别重复文件管理烦恼。

weixin_29054245的博客 382

在QListView中显示图标

头文件部分代码: QListView *listview; QStandardItem *s1; QStandardItem *s2; QStandardItem *s3;QStandardItem *s4; QStandardItem *s5; QStandardItem *s6; QStandardItemModel* slm;       源文件部分代码:      

u010142953的博客 6204

利用Gretna软件计算脑网络的全局属性和局部属性指标

使用Gretna,你可以计算脑网络的全局属性指标(如网络特征、小世界性和模块度),以及局部属性指标(如节点度和聚类系数)。通过Gretna,你可以计算脑网络的稀疏度,并进一步探索网络的特征和特性。Gretna是一款基于MATLAB平台的脑网络分析工具,它提供了丰富的函数和工具箱,用于计算和分析脑网络的结构和功能。在脑网络中,较高的稀疏度可能意味着神经系统的高效性和信息处理能力,因为较少的连接可以降低信息传递的成本。连接矩阵是一个N*N的矩阵,其中N表示节点的数量,矩阵的每个元素表示节点之间的连接强度。

code_program481的博客 1809

数字后端:版图基础seal ring

seal ring结构是为了防止划片或封装对芯片造成破坏,从而在芯片与划片道(scribe line)之间添加的一圈保护环

m0_61544122的博客 1万+

Qt显示图片的展示

通过qt将图片在窗口中显示出来 1.首先说说背景图片的显示 void setBackgroundImage(const QString &strPath) { QPixmap pixmap(strPath); QPalette palette=this->palette(); if(strPath.isEmpty()) { palette.setBrush(Qpalette::Ba

sram1501的博客 612

Vue3 - Element Plus 日期选择器 el-date-picker,设置 type=week 变成周选择器后,将选择周时修改为 “周一至周日“ 为一组范围(详细示例代码,新手小白秒会)

vue3,element-plus,DatePicker日期选择器,el-date-picker,周,type=week,周选择器,日期选择器week怎么拿到具体的时间范围,如何取week周选择器的value值,format如何设置,时间选择器按周选择时展示具体日期范围,vue3elementPlus日期选择器选择一周7天的数据格式怎么拿到,el-date-picker设置type等于week后怎么设置format属性,format和value-format怎么设置,范围选择器周,一周,选择一周7天时间

🏆 前端领域优质创作者 1万+

QListView 设置图标文字混合显示

Qt UI效果设置

weixin_42193704的博客 2590

蓝鸟四轴飞控系统C程序V3.0(基础版本)深度解读

2. 解析遥控通道数据(油门 / 横滚 / 俯仰 / 偏航),转换为标准化值(-1000~+1000);3. 封装PID初始化(PID_Init,配置KP/KI/KD、输出限幅、积分限幅);,包含姿态角(Attitude_Data.Roll/Pitch/Yaw)、角速度(Gyro_Data.X/Y/Z)、遥控值(RC_Data[0~5])、电池电压(Bat_Volt)、电机PWM值(Motor_PWM[0~3])、系统状态(Sys_State),校验和通过Check_Sum()函数计算;

搏博的专栏 344

【DexGraspNet与多指手抓取算法详解】第四章 抓取检测网络架构设计

图 $G=(V, E)$ 包含两类节点:指尖节点 $V_{tip} = \{v_{tip}^i\}_{i=1}^{N_{finger}}$ 与物体表面节点 $V_{obj} = \{v_{obj}^j\}_{j=1}^{N_{surf}}$。节点特征包含位置 $x \in \mathbb{R}^3$ 、法向 $n \in \mathbb{R}^3$ 及视觉特征 $f \in \mathbb{R}^d$。

VectorShift的博客 441
上一篇: PyQt(Python+Qt)学习随笔:model/view架构中的QStringListModel
下一篇: 第15.22节 PyQt(Python+Qt)入门学习:Model/View架构详解
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值