自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 PYQT:使用QComboBox做一个可以多选的下拉列表框

本文介绍了一个自定义多选ComboBox控件的设计与实现。该控件基于QComboBox进行改造,使用QListWidget作为下拉容器,每个选项嵌入QCheckBox实现多选功能。主要特点包括:支持全选/取消全选、半选状态显示、选择结果回显等。实现原理是通过重写QComboBox的下拉内容,将其替换为包含复选框的QListWidget,并处理相关状态变更事件。该控件可有效满足业务系统中的多条件筛选需求,提升用户体验。核心代码展示了如何创建自定义控件类,设置样式,管理选项状态以及处理用户交互。

2026-07-07 19:36:49 510

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(十、如何在TableView上添加按钮)

本文介绍了在表格视图中通过自定义代理实现行级操作按钮的高效方法。通过继承QStyledItemDelegate类创建OperationButtonDelegate代理,利用绘制功能在单元格内渲染按钮样式,并通过计算鼠标点击位置来触发对应操作信号。相比直接添加实体按钮,该方法避免了大量按钮对象的创建和信号连接,显著提升了性能。实现步骤包括:1)设置代理基本参数;2)重写paint方法绘制按钮样式;3)通过editorEvent处理点击事件;4)将代理关联到表格的最后一列。该方法适用于需要为每行数据添加操作按钮

2026-07-06 14:15:42 551

原创 Python教程:用sqlalchemy实现连接池管理,操作简化

本文介绍了数据库连接管理的优化策略:1. 全局实例管理:在FastAPI中通过state存储连接池,QT中作为初始化参数传递,避免多实例问题。2. 连接池优化:使用DBManager类缓存和复用引擎,配置连接池参数(pool_size、max_overflow等)。3. 资源管理:推荐使用with语句自动关闭连接,避免泄漏。4. 封装实用方法:提供了事务处理、多类型结果查询等封装方法,如execute_fetch支持scalar/dict等多种返回格式,transaction_insert_chain处理链

2026-07-04 14:37:17 374

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(九、在TableView实现多重表头)

本文介绍了在PySide6中实现不可编辑多重表头的两种方法,重点讲解了通过重写QHeaderView来自定义表头显示的完整方案。文章详细展示了如何实现层级表头的自动高度计算、合并单元格渲染以及性能优化等关键步骤,包括:1) 获取表头数据的模型方法;2) 动态计算表头层级和高度;3) 带合并功能的绘制逻辑;4) 通过缓存机制提升渲染性能。该方案解决了TableView默认压扁显示多重表头的问题,支持自定义样式和动态调整,为复杂数据展示提供了灵活的解决方案。

2026-06-29 19:12:01 360

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(八、在TableView实现冻结窗口)

本文介绍了使用PySide6实现类似Excel冻结窗口功能的表格控件开发。通过在主表格上方创建遮罩层实现冻结区域,主要功能包括:1)同步列宽调整和窗口大小变化;2)实现滚动同步和行高对齐;3)统一选择模型保证选中区域一致;4)通过事件穿透使冻结区域可操作;5)增强支持列隐藏和模型刷新保护。最后还提到如何实现自定义模型的整行选择功能,为下期介绍多重表头功能做铺垫。该控件采用双视图架构,通过信号连接和数据同步实现了完善的冻结表格功能。

2026-06-28 08:19:13 740

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(七、在TableView添加复选框)

本文介绍了在QT中实现表格复选框功能的完整方案。主要内容包括:1)通过重写data()方法实现首列复选框渲染;2)使用DataFrame存储复选框状态(0/2表示未选中/选中);3)通过setData()处理状态切换;4)提供获取选中数据的多种方式;5)实现全选/清空功能;6)支持整行选择交互。文章采用pandas.DataFrame作为数据容器,确保状态存储与懒加载兼容,并通过信号机制实现视图更新。最后预告下期将介绍冻结窗口和多层表头实现。

2026-06-27 15:09:15 255

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(六、基于PANDS的写入、交互控制,基于撤销栈的修改数据生成)

摘要:本文介绍了Qt中QAbstractTableModel的数据写入与交互控制机制。通过setData方法实现数据写入验证,flags方法控制单元格编辑和交互权限,包括ItemIsEditable(可编辑)和ItemIsEnabled(可交互)标志。文章详细讲解了权限控制逻辑、数据验证方式(如数字、时间格式校验),以及基于撤销栈的修改数据收集方法,并预告下期将介绍多选框实现。这些技术可用于构建灵活的数据表格控件,实现细粒度的单元格权限管理和数据验证。

2026-06-27 14:36:23 342

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(五、实现撤销、重做)

本文介绍了撤销/重做功能的实现方法:1. 使用deque双端队列分别存储撤销栈和重做栈;2. 通过log_modification方法记录数据修改操作,支持单个和批量操作记录(使用begin_batch/end_batch);3. 实现撤销和重做核心逻辑,通过_apply_single_change方法在栈间移动数据;4. 添加视图刷新机制保证界面同步更新。文章还提到后续将整合权限管理和数据获取功能。该方案采用命令模式思想,通过记录操作历史来实现状态回退,并优化了批量操作的性能。

2026-06-26 21:37:35 302

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(四、setData与复制、黏贴)

本文介绍了QAbstractTableModel的数据赋值与优化方法。主要包含:1)通过setData方法实现数据修改,支持复选框状态和普通数据编辑;2)优化策略包括重复值跳过和批量操作统一刷新;3)实现复制功能,将选中区域转为二维数组;4)粘贴功能解析剪贴板数据并写入模型;5)清除功能用None填充选中区域。最后预告下期将介绍撤销/重做和权限管理功能。

2026-06-26 20:59:14 280

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(三、如何装载懒加载)

本文介绍了如何在PySide6中实现TableView的懒加载功能,主要包含以下内容: 设计了两种懒加载方式:滚动加载和分页加载 创建了TableViewUI界面,包含分页控件、滚动条等元素 定义了DisplayMode枚举类控制不同显示模式(分页/迷你分页/隐藏/滚动) 实现了NavigationController控制器,处理分页逻辑和滚动加载逻辑 通过信号机制连接视图和控制器,实现数据范围更新和界面交互 文章重点讲解了分页计算、滚动条范围更新等核心逻辑,并提到后续将实现模型数据赋值(setData)功

2026-06-23 19:55:50 485

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(二、实现懒加载、筛选、排序)

本文介绍了基于Pandas的数据模型实现方案,主要包含以下内容: 使用Pandas替代二维数组存储数据,利用其强大的筛选、排序和切片功能 实现懒加载机制,通过分块加载数据解决大数据量时的性能问题 实现数据筛选功能,支持模糊匹配、精准匹配和布尔匹配三种方式 实现排序功能,基于Pandas的sort_values方法进行稳定排序 通过current_index方法统一管理原始索引、筛选索引和排序索引 该方案通过Pandas的高效数据处理能力,结合懒加载等优化技术,有效解决了大数据量展示时的性能问题

2026-06-22 08:24:17 682

原创 基于PANDAS的QAbstractTableModel实现高级TableView详细解析(一、基本原理)实现懒加载、复制黏贴、撤回重做、筛选、排序、多层表头、复选框、行级按钮、窗口冻结、权限编辑功能

本文介绍了基于PYQT的TableView完整实现方案,重点讲解了QAbstractTableModel的核心用法。通过重写rowCount、columnCount和data方法实现基础表格功能,并详细说明了多重表头、权限控制、数据修改等扩展功能的实现原理。文章还介绍了Qt的信号机制(dataChanged/layoutChanged/modelReset)在UI更新中的应用,为后续讲解懒加载等高级功能奠定基础。该方案解决了现有文档不完整或过时的问题,提供了更全面的TableView开发指南。

2026-06-21 12:45:01 377

PYQT 多重表头,解决默认QT只能渲染一层的情况

PYQT 多重表头,在自定义模型中添加方法即可实现多重表头渲染 def get_header_structure(self, orientation): "直接获取总数据的表头信息,默认方式的布局刷新机制可能获取到错误的表头" if orientation == Qt.Horizontal: return self._full_data.columns.to_list() return self._full_data.index.to_list()

2026-06-29

PYQT的窗口冻结功能实现

PYQT的窗口冻结功能实现,包含多重表头的代码可以配合使用,没需求可以删掉

2026-06-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除