QTableWidget之表格列的隐藏与显示(折叠)
今天晚上花点时间研究一下表格列的显隐问题(类似与excel的隐藏列功能),在网络上搜罗了一通资料,没现成的例子作为借鉴,只能自己研究编写了。现在将过程记录下来,以便日后翻阅。
首先声明:因为时间仓促,以下例子写的不是很规范,只是为了实现特定功能,如果哪位仁兄想要借鉴,只能自己完善优化以下了。示例运行后的如下图所示:


1.创建项目工程
1.创建TableLearn工程,只包括以下文件。

2.资源mainwindow.ui中拉入一个QTableWidget,瞎输入几行几列。其中类目1、类目2、类目3左右显隐节点,分别显隐对应的子集。

2.显隐按钮添加
1.在类目1、类目2、类目3位置创建3个按钮,分别用于显隐触发各自的子项。按钮存放到QButtonGroup中用于统一建议按钮的信号槽映射关系。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QButtonGroup>namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();void UpdateButtonPos(int buttonId);
private slots:void on_buttonClicked(int id);
private:Ui::MainWindow *ui;QButtonGroup *m_buttonGroup;
};
#endif // MAINWINDOW_H
2.按钮位置设置与信号槽绑定过程
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);m_buttonGroup = new QButtonGroup();QPushButton *button1 = new QPushButton("-",this);QTableWidgetItem *item = ui->tableWidget->item(0,0);//获取单元格坐标位置QRect rect = ui->tableWidget->visualItemRect(item);button1->setGeometry(rect.x() + rect.width(),rect.y(),36,36);m_buttonGroup->addButton(button1,0);QPushButton *button3 = new QPushButton("-",this);item = ui->tableWidget->item(0,3);//获取单元格坐标位置rect = ui->tableWidget->visualItemRect(item);button3->setGeometry(rect.x() + rect.width(),rect.y(),36,36);m_buttonGroup->addButton(button3,3);QPushButton *button6 = new QPushButton("-",this);item = ui->tableWidget->item(0,6);//获取单元格坐标位置rect = ui->tableWidget->visualItemRect(item);button6->setGeometry(rect.x() + rect.width(),rect.y(),36,36);m_buttonGroup->addButton(button6,6);connect(m_buttonGroup,SIGNAL(buttonClicked(int)),this,SLOT(on_buttonClicked(int)));}
3. 按钮点击处理
void MainWindow::on_buttonClicked(int id)
{if(id == 0){if(m_buttonGroup->button(id)->text() == "□"){ui->tableWidget->setColumnHidden(1,false);ui->tableWidget->setColumnHidden(2,false);m_buttonGroup->button(id)->setText("-");}else{ui->tableWidget->setColumnHidden(1,true);ui->tableWidget->setColumnHidden(2,true);m_buttonGroup->button(id)->setText("□");}}else if(id == 3){if(m_buttonGroup->button(id)->text() == "□"){ui->tableWidget->setColumnHidden(4,false);ui->tableWidget->setColumnHidden(5,false);m_buttonGroup->button(id)->setText("-");}else{ui->tableWidget->setColumnHidden(4,true);ui->tableWidget->setColumnHidden(5,true);m_buttonGroup->button(id)->setText("□");}}else if(id == 6){if(m_buttonGroup->button(id)->text() == "□"){ui->tableWidget->setColumnHidden(7,false);m_buttonGroup->button(id)->setText("-");}else{ui->tableWidget->setColumnHidden(7,true);m_buttonGroup->button(id)->setText("□");}}UpdateButtonPos(0);UpdateButtonPos(3);UpdateButtonPos(6);
}
4.按钮位置更新
void MainWindow::UpdateButtonPos(int buttonId)
{//移动按钮QRect rect = ui->tableWidget->visualItemRect(ui->tableWidget->item(0,buttonId));m_buttonGroup->button(buttonId)->move(rect.x()+rect.width(),rect.y());
}相关文章:
QTableWidget之表格列的隐藏与显示(折叠)
今天晚上花点时间研究一下表格列的显隐问题(类似与excel的隐藏列功能),在网络上搜罗了一通资料,没现成的例子作为借鉴,只能自己研究编写了。现在将过程记录下来,以便日后翻阅。 首先声明:因为时…...
Leetcode3146. 两个字符串的排列差
题目描述: 给你两个字符串 s 和 t,每个字符串中的字符都不重复,且 t 是 s 的一个排列。 排列差 定义为 s 和 t 中每个字符在两个字符串中位置的绝对差值之和。 返回 s 和 t 之间的 排列差 。 代码思路: 建立字符位置映射&…...
二百八十五、华为云PostgreSQL——建分区表并设置主键
一、目的 在PostgreSQL里建表,设置主键,三个字段确认数据的唯一性。设置分区字段,按月分区 二、PostgreSQL版本 三、PostgreSQL 9.2.4 版本缺点 在 PostgreSQL 9.2.4 中,虽然你可以创建分区表,但需要注意的是&#…...
系统架构设计师-第3章 数据库设计
【本章学习建议】 根据考试大纲,本章主要考查系统架构设计师单选题,预计考5分左右,以及案例分析1题,25分。对应第二版教材2.3.3小节以及第6章,主要考点在第6章,这里一起合并到本章课程中。 3.1 数据库基本…...
SAP MDG —— MDG on S/4HANA 2023 FPS03 创新汇总
文章目录 MDG 基于SAP S/4HANA 2023 FPS03的创新BP/C/S:消息控制BP/C/S:手工分配数据控制者MDG-F:使用S/4扩展数据校验功能生成式AI可用于协助自定义对象的数据变更/同时可总结批量变更的内容 MDG 基于SAP S/4HANA 2023 FPS03的创新 由于从S…...
软考中级-数据库-3.2 数据结构-数组和矩阵
数组 一维数组是长度固定的线性表,数组中的每个数据元素类型相同。n维数组是定长线性表在维数上的扩张,即线性表中的元素又是一个线性表。 例如一维数组a[5][a1,a2,a3,a4,a5] 二维数组a[2][3]是一个2行2列的数组 第一行[a11,a12,a13] 第二行[a21,a22,a23…...
有符号数和无符号数的加减运算
一、无符号数的加减运算 加法 规则:直接按二进制逐位相加,若最高位产生进位(即结果超出(2^n)范围),则结果对(2^n)取模((n)为位数)。示例(8位无符号数): (200 …...
动态链接器(十):重定位
ELF文件中有许多种类型的重定位条目,这些重定位条目指导动态链接器在加载或运行时解析符号地址,确保程序能够正确地引用动态库中的函数和变量。 本文主要介绍那些与动态链接有关的重定位条目(主要介绍Rela相关的,Rel相关的不作介…...
EGO-Planner的无人机视觉选择(yolov5和yolov8)
EGO-Planner的无人机视觉选择(yolov5和yolov8) 效果 yolov5检测效果 yolov8检测效果 一、YOLOv8 vs YOLOv5:关键差异解析 1. 训练效率:为何YOLOv8更快? 架构轻量化 YOLOv8采用C2f模块(Cross Stage Partia…...
IO标准函数和时间函数
1、将当前的时间写入到time. txt的文件中,如果ctrlc退出之后,在再次执行支持断点续写 1.2022-04-26 19:10:20 2.2022-04-26 19:10:21 3.2022-04-26 19:10:22 //按下ctrlc停止,再次执行程序 4.2022-04-26 20:00:00 5.2022-04-26 20:00:0…...
为AI聊天工具添加一个知识系统 之133 详细设计之74通用编程语言 之4 架构及其核心
本篇继续讨论 通用编程语言。 说明:本阶段的所有讨论都是围绕这一主题展开的,但前面的讨论分成了三个大部分(后面列出了这一段的讨论题目的归属关系)-区别distinguish(各别): 文化和习俗。知识…...
【零基础到精通Java合集】第二十三集:G1收集器深度解析
课程标题:G1收集器深度解析——面向大内存与低延迟的现代垃圾回收器(15分钟) 目标:掌握G1核心设计思想、运行机制与调优策略,理解其如何平衡吞吐量与低延迟 0-1分钟:课程引入与G1设计目标 以“城市交通智能调度”类比G1核心思想:将堆内存划分为多个区域(Region),动…...
似然函数与极大似然估计
前言 本文隶属于专栏《机器学习数学通关指南》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢! 本专栏目录结构和参考文献请见《机器学习数学通关指南》 正文 📚 1. 似然函数&a…...
QSFP(Quad Small Form-factor Pluggable)详解
1. QSFP的定义 QSFP(Quad Small Form-factor Pluggable)是一种四通道热插拔光模块/电模块,专为高速网络传输设计。其名称中的“Quad”表示模块集成4个独立通道,每个通道支持1Gbps至10Gbps速率(总带宽可达40Gbps&#…...
WDM_OTN_基础知识_波分系统基本构成-无源器件
在波分系统中通常将发光,对光进行放大以及产生光电转换的器件称之为有源器件,例如光放,激光器,与此相反,将那些不发光,不对光进行放大,也不产生光电转换的器件称之为无源器件,波分系统中的无源器…...
【音视频】ffmpeg音视频处理基本流程
一、ffmpeg音视频处理基本流程 首先先看两条命令 ffmpeg -i 1.mp4 -acodec copy -vcodec libx264 -s 1280x720 2.flv ffmpeg -i 1.mp4 -acodec copy -vcodec libx265 -s 1280x720 3.mkv-i :表示输入源,这里是1.mp4,是当前路径下的视频文件-acodec copy…...
【网络编程】之TCP实现客户端远程控制服务器端及断线重连
【网络编程】之TCP实现客户端远程控制服务器端及断线重连 TCP网络通信实现客户端简单远程控制主机基本功能演示通信过程代码实现服务器模块执行命令模块popen系列函数 客户端模块服务器主程序 windows作为客户端与服务器通信#pragma comment介绍 客户端使用状态机断线重连代码实…...
云原生容器编排:构建智能弹性应用的自动化引擎
引言:重构应用部署范式 Google Borg系统管理着超2500万容器实例,每日处理200亿个任务。阿里巴巴双十一使用Kubernetes实现300万Pod秒级弹性,资源利用率达65%。CNCF 2023报告显示全球Kubernetes生产采用率突破92%,CRI-O容器启动速…...
centos虚拟机安装
以下是一个详细的 VMware CentOS 虚拟机安装教程,结合了最新的信息和步骤: 一、准备工作 1. 下载 VMware 软件 访问 VMware 官方网站:VMware Workstation 官网。点击“现在安装”并下载适合您操作系统的 VMware Workstation。 2. 下载 Ce…...
社会力模型:Social force model for pedestrian dynamics
Social Force Model——社会力模型-CSDN博客 简介: 时间:1995 期刊:《Physical Review E》 作者:Dirk Helbing and Peter Molnar 摘要: 提出一种描述行人运动的“社会力模型”。认为行人的运动可看作是受到一系列…...
论性能测试
性能测试 随着互联网应用规模化、业务场景复杂化,系统在高并发、大数据量场景下的性能表现直接影响用户体验与业务连续性一一 响应延迟、并发处理能力不足、资源耗尽等问题可能导致用户流失或重大业务损失。性能测试作为软件质量保障的核心环节,通过模拟…...
AI从业者的理财攻略:如何用AI技术实现被动收入
AI时代,软件测试从业者的新理财机遇在人工智能技术飞速发展的当下,软件测试行业正经历着深刻变革。传统的手工测试逐渐被自动化测试、AI驱动的测试所取代,这既给软件测试从业者带来了挑战,也创造了新的机遇。对于软件测试从业者而…...
整合Taotoken多模型能力为智能客服场景提供备选方案
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 整合Taotoken多模型能力为智能客服场景提供备选方案 在构建智能客服系统的过程中,产品经理和工程师常常面临一个核心挑…...
聚焦新型有效成分,守护爱宠健康
养宠过程中,用药安全是守护宠物健康的核心关键。多数养宠人选药时,常只关注品牌、价格或口碑,却忽略了药物有效成分这一核心根本。随着宠物医药技术迭代升级,多款新型专用药用成分落地应用,凭借精准、安全、低耐药的优…...
喜马拉雅音频下载器:三分钟学会下载付费专辑的完整方案
喜马拉雅音频下载器:三分钟学会下载付费专辑的完整方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 你是否遇到过这…...
阿伐曲泊帕常见副作用头痛及疲劳的临床特征与管理
头痛与疲劳是阿伐曲泊帕治疗慢性肝病相关血小板减少症时患者报告频率最高的两项非肝脏系统不良反应。两项副作用虽极少直接危及生命,却实实在在地侵蚀着患者的日常功能与长期治疗依从性。ADAPT-1与ADAPT-2两项三期临床试验的完整安全性数据,为这两项副作…...
观察使用token plan套餐后月度api成本的可控性变化
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察使用token plan套餐后月度api成本的可控性变化 对于个人开发者或小型项目而言,大模型API的调用成本常常是预算中一…...
ARM与FPGA通信接口设计:从并行总线到AXI的软硬件协同实践
1. 项目概述:从一次调试“事故”说起去年,我在一个边缘计算网关的项目上,遇到了一个让人头大的问题。项目核心是一块定制板,处理器是四核的ARM Cortex-A53,旁边紧挨着一片中等规模的FPGA。我们的设计是让ARM负责复杂的…...
10个常用密码破解与恢复工具盘点:如何高效找回遗忘的文件密码?
密码破解与恢复工具是普通用户找回遗忘文档密码、安全审计人员进行渗透测试以及 IT 工程师评估应用安全性的常用利器。这些工具通常基于穷举法(Brute Force),并配合密码字典或彩虹表进行攻击。随着计算能力的提升,密码恢复的效率也…...
5步构建你的私有云游戏平台:Sunshine串流服务器完全指南
5步构建你的私有云游戏平台:Sunshine串流服务器完全指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款免费开源的自托管游戏串流服务器软件࿰…...
