QTableWidget——表格的合并与拆分

news2024/12/28 14:20:31

一、整体思路

表格的操作使用QTableView::setSpan可以实现表格的行和列的合并
表格拆分没有对应的处理函数
主要思路:对表格的属性、内容、拆分与合并的参数进行存储,在进行拆分时对表格内容进行重新创建(不考虑效率问题)

二、效果

1、合并效果
合并操作,是将要合并的项进行了覆盖,被合并的项只是被隐藏了
在这里插入图片描述
2、拆分效果
在这里插入图片描述

三、部分测试代码

//合并操作
void MainWindow::onSpanCell()
{
    QModelIndexList list = m_table->selectionModel()->selectedIndexes();
    if (list.size() < 2)
    {
        QMessageBox::warning(this, "单元格合并", "所选中单元格中为单个单元格,无法合并", "确定");
        return;
    }

    int minRow = 0;
    int maxRow = 0;
    int minCol = 0;
    int maxCol = 0;

    QList<QTableWidgetSelectionRange> vec = m_table->selectedRanges();

    if (vec.size() > 0)
    {
        minRow = vec[0].topRow();
        maxRow = vec[0].topRow();
        minCol = vec[0].leftColumn();
        maxCol = vec[0].rightColumn();
    }

    for (auto v : vec)
    {
        if (minRow > v.topRow())
        {
            minRow = v.topRow();
        }
        if (maxRow < v.bottomRow())
        {
            maxRow = v.bottomRow();
        }

        if (minCol > v.leftColumn())
        {
            minCol = v.leftColumn();
        }
        if (maxCol < v.rightColumn())
        {
            maxCol = v.rightColumn();
        }
    }

    int rowSpan = (maxRow - minRow) + 1;
    int colSpan = (maxCol - minCol) + 1;
    m_table->setSpan(minRow, minCol, rowSpan, colSpan);
    for(auto& pRowInfro:m_tableInfor)
    {
        if(pRowInfro.first==minRow)
        {
            for(auto& pColInfro:pRowInfro.second)
            {
                if(pColInfro.first==minCol)
                {
                    pColInfro.second->rowSpan = rowSpan;
                    pColInfro.second->colSpan = colSpan;
                }
            }
        }
    }
}
//拆分
void MainWindow::onSplitCell()
{
    QList<QTableWidgetSelectionRange> vec = m_table->selectedRanges();
    if (vec.size() < 2)
    {
        QMessageBox::warning(this, QString::fromLocal8Bit("拆分表格失败"), "单元格已是最小颗粒度,不能再进行拆分", "确定");
        return;
    }
    int row,col;
    for (auto i : vec)
    {
        row = i.topRow();
        col = i.leftColumn();
        for(auto& pRowInfro:m_tableInfor)
        {
            if( pRowInfro.first == row )
            {
                for(auto& pColInfro:pRowInfro.second)
                {
                    if(pColInfro.first == col)
                    {
                        pColInfro.second->rowSpan = 0;
                        pColInfro.second->colSpan = 0;
                    }
                }
            }
        }
    }
   createTable();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1223158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑技巧:低配置的旧电脑也可以使用Win11系统了

目录 一、优点和适用场景 二、下载以及版本说明 三、安装说明 四、Tiny11 设置安装简体中文语言方法 Windows 11&#xff0c;作为微软最新一代操作系统&#xff0c;固然有其强大的功能和卓越的性能&#xff0c;但有时&#xff0c;更轻、更小、更快速的需求也在用户的考虑范…

企业视频数字人有哪些应用场景

来做个数字人吧&#xff0c;帮我干点活吧。 国内的一些数字人&#xff1a; 腾讯智影 腾讯智影数字人是一种基于人工智能技术的数字人物形象&#xff0c;具有逼真的外观、语音和行为表现&#xff0c;可以应用于各种场景&#xff0c;如新闻播报、文娱推介、营销、教育等。 幻…

链路追踪,助您洞悉数据联动分析的奥秘

前言 在当今复杂的分布式系统中&#xff0c;了解请求在不同服务之间的传递路径和性能情况对于系统的性能优化至关重要。链路追踪通过记录和分析请求在系统中的传递路径和性能数据&#xff0c;为实现数据联动分析提供了重要的支持。我们曾谈论观测云提供火焰图能够实现链路追踪…

js/jQuery 的一些常用操作(js/jQuery获取表单元素值 以及 清空元素值的各种实现方式)——附测试例子,拿来即能实现效果

js/jQuery 的一些常用操作&#xff08;js/jQuery获取表单元素值 以及 清空元素值的各种实现方式&#xff09;——附测试例子&#xff0c;拿来即能实现效果 1. 前言2. 获取表单元素的值2.1 简单获取元素中的值2.1.1 根据 id 简单取值2.2.2 根据name 简单取值2.1.3 获取单选按钮的…

红队攻防之特殊场景上线cs和msf

倘见玉皇先跪奏&#xff1a;他生永不落红尘 本文首发于先知社区&#xff0c;原创作者即是本人 网络拓扑图 一、msf正向木马拿不出网域控shell msf生成木马 msfvenom -p windows/x64/meterpreter/bind_tcp lport4444 -f raw -o msf1.bin用msfvenom生成一个正向马传进去&…

第五届全国高校计算机能力挑战赛-程序设计挑战赛(C++)

代码输出结果题目&#xff0c;自己跟着敲一遍就行了&#xff01;&#xff01;&#xff01; 指针常量和常量指针的区别https://blog.csdn.net/qq_36132127/article/details/81940015?ops_request_misc%257B%2522request%255Fid%2522%253A%2522170027731616800222813804%2522%2…

基于人工电场算法优化概率神经网络PNN的分类预测 - 附代码

基于人工电场算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于人工电场算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于人工电场优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

LeetCode47-全排列II-剪枝逻辑

参考链接: &#x1f517;:卡尔的代码随想录:全排列II 这里第一层,used只有一个元素为1,代表只取出了1个元素作为排列,第二层used有两个元素为1,代表取出了2个元素作为排列,因为数组有序,所以重复的元素都是挨着的,因此可以使用如下语句去重. 其中visit[i-1]False的话,就是代表…

代码随想录算法训练营第三十八天【动态规划part01】 | 动态规划理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯

动态规划理论基础 什么是动态规划 动态规划 (Dynamic Programming, DP)&#xff0c;是求解决策过程最优化的过程。 如果某一问题有很多重叠子问题&#xff0c;使用动态规划是最有效的。 所以动态规划中每一个状态一定是由上一个状态推导出来的&#xff0c;这一点就区分于贪…

振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(5)

注解目录 1、倾斜传感器的那些基础干货 1.1 典型应用场景 &#xff08;危楼、边坡、古建筑都是对倾斜敏感的。&#xff09; 1.2 倾斜传感器的原理 1.2.1 滚珠式倾斜开关 1.2.2 加速度式倾斜传感器 1)直接输出倾角 2)加速度计算倾角 3)倾角精度的提高 &#xff08;如果…

NC65 如何设置现金流量明细查询的查询框中核算账簿可多选??

NC65 如何设置现金流量明细查询的查询框中核算账簿可多选&#xff1f;&#xff1f; NC65 如何设置现金流量明细查询的查询框中核算账簿可多选&#xff1f;&#xff1f;效果如下图 解决方案二开&#xff0c;即在 nc.ui.gl.cashflowcase.CashFlowDetailQueryUI 的 onButtonQuer…

2018年五一杯数学建模B题商业银行人民币贷款规模分配及盈利问题解题全过程文档及程序

2019年五一杯数学建模 B题 商业银行人民币贷款规模分配及盈利问题 原题再现 商业银行贷款投放的简单模型是&#xff1a;从客户端吸收存款&#xff0c;缴存法定准备金&#xff08;法定准备金率&#xff1a;大型金融机构15.5%&#xff0c;中小金融机构12%&#xff1b;法定准备金…

安装 eslint 配置指南 及 遇到的一些问题记录

前端eslint配置指南 背景 当前前端项目风格混乱&#xff0c;每个人有自己的开发习惯&#xff0c;有自己的格式化习惯&#xff0c;不便于项目的风格统一&#xff0c;不利于代码维护有的项目eslint没有用起来&#xff0c;没有起到规范代码的作用&#xff0c;导致出现一些基础代码…

RT-DETR算法优化改进:Inner-IoU基于辅助边框的IoU损失,高效结合 GIoU, DIoU, CIoU,SIoU 等 | 2023.11

本文改进:Inner-IoU引入尺度因子 ratio 控制辅助边框的尺度大小用于计算损失,并与现有的基于 IoU ( GIoU, DIoU, CIoU,SIoU )损失进行有效结合 推荐指数:5颗星 新颖指数:5颗星 RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/category_12497375…

UE5 C++报错:is not currently enabled for Live Coding

解决办法&#xff1a; 再次打开项目&#xff0c;以此法打开&#xff1a;

【汇编】Loop指令、段前缀

文章目录 前言一、Loop指令1.1 Loop指令是什么&#xff1f;1.2 他的条件是什么&#xff1f;1.3 例子示例1示例2 1.4 要点总结 二、段前缀2.1 为什么要引入他2.2 对策 总结 前言 在计算机编程的世界里&#xff0c;了解底层的硬件操作是提升程序员能力的关键一步。汇编语言作为一…

AI技术:分享8个非常实用的AI绘画网站

目录 1、Midjourney 2、Stable Diffusion Omline 3、Microsoft Designer 4、Craiyon 5、NightCafe Studio 6、Wombo 7、Dalle-2 8、Avatar AI 1、Midjourney 特点&#xff1a;业内标杆&#xff0c;效果最强大 Midjourney是基于diffusion的AI图画艺术生成器。生成图片不…

PyTorch DataLoader整理函数详解【collate_fn】

DataLoader 是 PyTorch 中最常用的类之一。 而且&#xff0c;它是你首先学习的内容之一。 该类有很多参数&#xff0c;但最有可能的是&#xff0c;你将使用其中的大约三个参数&#xff08;dataset、shuffle 和 batch_size&#xff09;。 今天我想解释一下 collate_fn 的含义—根…

【开源】基于JAVA的快递管理系统

项目编号&#xff1a; S 007 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S007&#xff0c;文末获取源码。} 项目编号&#xff1a;S007&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 数据中心模块2.2 快递类型模块2.3 快…

windows 10 更新永久关闭

1 winR 输入&#xff1a;services.msc 编辑&#xff1a; 关闭&#xff1a;