QT 关于QTableWidget的常规使用
目录
一、初始化
二、封装功能用法
三、结语
一、初始化
1、设置表头
直接在ui设计界面修改或者使用QT封装的函数修改,代码如下:
QStringList recList = {"第一列", "第二列", "第三列"};
ui->tableWidget->setHorizontalHeaderLabels(recList);
2、设置行数、列数
//设置列
ui->tableWidget->setColumnCount(3);
//设置行
ui->tableWidget->setRowCount(3);
3、设置表格颜色交替
很多时候为了方便查看,相邻两行需要用到不同的颜色。代码如下,这个要同时使用QSS和封装的函数
ui->tableWidget->setAlternatingRowColors(true);//QSS表:
QTableView{background-color: rgb(250, 250, 250);alternate-background-color: rgb(232,241,250);font-size: 14pt;
}
4、设置列宽自适应
有的时候不要水平滚动条的出现,即可设置列宽自适应,所有列横向占满整个表格,看着心里舒服,代码如下:
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
5、设置表格内容以及获取内容
//设置内容
int curRow = 0;//行号
int curCol= 0;//列号
ui->tableWidget->setItem(curRow, curCol, new QTableWidgetItem("这里是0列0行"));
int curRow = 1;
int curCol= 1;
ui->tableWidget->setItem(curRow, curCol, new QTableWidgetItem("这里是1列1行"));
//获取内容
QString text = ui->tableWidget->item(curRow, curCol)->text();
6、清空表格
如果需要连同单元格都清除,则调用clear()函数,如果只是想清空表格中的内容,则调用函数clearContents(),代码示例:
ui->tableWidget->clearContents();
ui->tableWidget->clear();
7、滑动表格
初始化有时需要用到,需要开始显示的不是第一行而是中间或者哪里,或者说刷新表格功能里头需要重新置顶
ui->tableWidget->verticalScrollBar()->setValue(0);//置顶
//横向horizontalScrollBar()
8、设置目标单元格为当前选中状态(单击单元格后的状态)
ui->tableWidget->setCurrentCell(row, col);
二、封装功能用法
1、遍历表格
操作表格的第一步,就是要学会遍历它,遍历代码如下,下面两个例子(2、3)便是利用遍历表格封装一些函数使用。
int rowCount = tableWidget->rowCount();//行的数量
int colCount = tableWidget->columnCount();//列的数量
for (int row = 0; row < rowCount; ++row) {for (int col= 0; row < colCount ; ++row) {QTableWidgetItem *item = tableWidget->item(row, col);if (item) {qDebug() << item->text();//打印其内容}}
}
2、修改表格目标行的颜色
有时候需要暂时改变某一行的颜色来突出显示它,也可能是其他原因需要改变一下这一行的颜色,基于遍历表格的方法封装函数代码如下,传入参数:目标函数号、表格体、颜色
void changeTableWRowColor(int curRow, QTableWidget *tableWidget, const QColor &color)
{for (int col = 0; col < tableWidget->columnCount(); ++col) {QTableWidgetItem *item = tableWidget->item(curRow, col);if (item) {item->setBackground(color);//设置背景 样例:QColor(255, 0, 0)//设置文字颜色:setForeground(QColor(255, 0, 0))}}
}
3、在某一列查找一个内容
基于遍历表格的方法,遍历时判断内容,对比内容,查到即返回行号。传入参数:表格、内容、列号。可以对函数稍作修改,变为查找表格中内容所有内容进行对比,查找目标内容有几个以及对应的坐标。在某一列查找一个内容的示例封装函数如下:
int findRowByValue(QTableWidget *tableWidget, const QString &value, int col)
{int rowCount = tableWidget->rowCount();for (int row = 0; row < rowCount; ++row) {QTableWidgetItem *item = tableWidget->item(row, col); // 获取第一列的单元格if (item && item->text() == value) {return row; // 找到匹配的值,返回行号}}return -1; // 没有找到匹配的值,返回-1
}
4、设置表格内容改变时,识别内容并作出处理
这里示例是当出现什么结果时,显示什么文字,改变槽函数示例代码如下,进入槽函数时解开信号,完成时重新绑定,以免出现回调死循环。
//表格内容显示翻译
void MainWindow::on_tableWidget_cellChanged(int row, int column)
{//进入时解除连接disconnect(ui->tableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(on_tableWidget_cellChanged(int, int)));if(column == 1){//选定列号为1,即第二列QTableWidgetItem *curItem = ui->tableWidget->item(row, 1);//这里我已确保curItem 不会为空,如果你有删除操作则需要判断curItem 是否为空以免程序异常退出QString bacthSatus = curItem->text();//表格内容QString bacthSatusTip;if(bacthSatus == "11"){bacthSatusTip = "处理中...";}else if(bacthSatus == "22"){bacthSatusTip = "已完成!";}else{bacthSatusTip = QString("错误状态:%1").arg(bacthSatus);}curItem->setText(bacthSatusTip);}//完成时重新连接connect(ui->tableWidget, SIGNAL(cellChanged(int, int)), this, SLOT(on_tableWidget_cellChanged(int, int)));
}
三、结语
以上便是我自己学习表格使用过程中常用的方法了,后续有经验了会补充。
相关文章:
QT 关于QTableWidget的常规使用
目录 一、初始化 二、封装功能用法 三、结语 一、初始化 1、设置表头 直接在ui设计界面修改或者使用QT封装的函数修改,代码如下: QStringList recList {"第一列", "第二列", "第三列"}; ui->tableWidget->setH…...
PyCharm 常用 的插件
Material Theme UI Lite:提供多种不同的页面风格,为PyCharm界面增添个性化元素。Chinese (Simplified) Language Pack:为中文用户提供简体中文的界面、菜单、提示信息,提升使用体验。Tabnine:基于人…...
理解 HTTP 请求中 Query 和 Body 的异同
本文将深入探讨HTTP请求中的两个关键要素:查询参数(Query)和请求体(Body)。我们将阐明它们之间的差异,并讨论在何种情况下使用每一种。 HTTP 请求概述 HTTP 请求是客户端(如浏览器)…...
【AI大模型】 企业级向量数据库的选择与实战
前言 ChatGPT4相比于ChatGPT3.5,有着诸多不可比拟的优势,比如图片生成、图片内容解析、GPTS开发、更智能的语言理解能力等,但是在国内使用GPT4存在网络及充值障碍等问题,如果您对ChatGPT4.0感兴趣,可以私信博主为您解决账号和环境…...
LangChain开发框架并学会对大型预训练模型进行微调(fine-tuning)
要掌握LangChain开发框架并学会对大型预训练模型进行微调(fine-tuning),你需要理解整个过程从数据准备到最终部署的各个环节。下面是这一流程的一个概览,并提供了一些关键步骤和技术点: 1. LangChain开发框架简介 La…...
VMware安装(有的时候启动就蓝屏建议换VM版本)
当你开始使用虚拟化技术来管理和运行多个操作系统时,VMware 是一个强大且广泛使用的选择。本篇博客将指导你如何安装 VMware Workstation Pro,这是一个功能强大的虚拟机软件,适用于个人和专业用户。 一、下载 VMware Workstation Pro 访问官网…...
AV1技术学习:Quantization
量化是对变换系数进行,并将量化索引熵编码。AV1的量化参数 QP 的取值范围是0 ~ 255。 一、Quantization Step Size 在给定的 QP 下,DC 系数的量化步长小于 AC 系数的量化步长。DC 系数和 AC 系数从 QP 到量化步长的映射如下图所示。当 QP 为 0 时&…...
vllm部署记录
1. pip安装 pip install vllm 下载模型在huggingface.co 注意在modelscope上的这个opt-125m好像不行了,我git不下来报错 启动服务 vllm serve opt-125m --model opt-125m --port 8888 第一个opt-125m是名字,可以在vllm支持的模型中查到,第二个是模型存放文件夹及其路径…...
HTML前端 盒模型及常见的布局 流式布局 弹性布局 网格布局
CSDN的文章没有“树状目录管理”,所以我在这里整理几篇相关的博客链接。 操作有些麻烦。 CSS 两种盒模型 box-sizing content-box 和 border-box 流式布局 flow layout 弹性布局 flex layout HTML CSS 网格布局 grid layout HTML CSS...
网络安全 DVWA通关指南 DVWA Command Injection(命令注入)
DVWA Command Injection(命令注入) 文章目录 DVWA Command Injection(命令注入)LowMediumHighImpossible Low 1、分析网页源代码 <?php// 当表单提交按钮(Submit)被触发时执行以下代码 if (isset($_P…...
VUE3学习第三篇:报错记录
1、在我整理好前端代码框架后,而且也启动好了对应的后台服务,访问页面,正常。 2、报错ReferenceError: defineModel is not defined 学到这里报错了 在vue网站的演练场,使用没问题 但是在我自己的代码里就出问题了 3、watchEffec…...
CentOS怎么关闭自动锁屏?
禁止自动锁屏 有时候几分钟不用Centos,系统就自动锁屏了,这是一种安全措施,防止别人趁你不在时使用你的系统。但对于大部分人而言,这是没有必要的,尤其是Centos虚拟机,里面没啥重要的东西,每次…...
vscode 环境
这张截图显示的是在VS Code(Visual Studio Code)中选择Python解释器的界面。不同的Python解释器及其虚拟环境列出了可选项,用户可以根据需要选择合适的解释器来运行Python代码。以下是对截图中信息的详细解释: 解释器选择界面 当…...
浏览器自动化测试工具selenium——爬虫操作记录
selenium——是一款web自动化测试框架,其能模拟正常的用户操作,比如点击。但selenium并不是浏览器,没有执行js和解析html/css的能力,因此selenium需要和浏览器配合使用。 因为selenium可以模仿用户行为,因此selenium也…...
微信小程序配置访问服务器失败所发现的问题及解决方案
目录 事前现象问题1:问题现象:问题分析: 问题2:问题现象:问题分析:解决方案: 事后现象 事前现象 问题1: 问题现象: 在本地调试时,一切顺利,但一…...
javaEE(1)
一. Web开发概述 Web开发:指的是从网页中向后端程序发送请求,与后端程序进行交互 Web服务器:是一种软件,向浏览器等Web客户端提供文档等数据,实现数据共享,它是一个容器,是一个连接用户和程序之间的中间键 二. Web开发环境搭建 我们要实现前后端交互,首先需要中间键Web服务…...
极简Springboot+Mybatis-Plus+Vue零基础萌新都看得懂的分页查询(富含前后端项目案例)
目录 springboot配置相关 依赖配置 yaml配置 MySQL创建与使用 (可拿软件包项目系统) 创建数据库 创建数据表 mybatis-plus相关 Mapper配置 编辑 启动类放MapperScan 启动类中配置 添加config配置文件 Springboot编码 实体类 mapperc(Dao…...
IPython的Bash之舞:%%bash命令全解析
IPython的Bash之舞:%%bash命令全解析 IPython的%%bash魔术命令为Jupyter Notebook用户提供了一种在单元格中直接执行Bash脚本的能力。这个特性特别适用于需要在Notebook中运行系统命令或Bash特定功能的场景。本文将详细介绍如何在IPython中使用%%bash命令ÿ…...
ST Stellar-E SR5E1 22KW OBC combo 3KW DC-DC汽车充电器解决方案
对于全球的环境保护意识抬头,全球的汽车产业慢慢步入电动化的时代,以减少碳排放。整车系统主要是由电池、电驱、电控的三电所构成,其中电池系统是整车的动力来源,而对电池充电的OBC系统更甚重要。一具高度安全性且高效的OBC系统&a…...
Postman中的A/B测试实践:优化API性能的科学方法
Postman中的A/B测试实践:优化API性能的科学方法 在API开发和测试过程中,A/B测试是一种验证新功能或变更效果的有效方法。通过比较两个或多个版本(例如A版本和B版本)的性能,可以科学地评估变更的影响。Postman作为API测…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
4. TypeScript 类型推断与类型组合
一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式,自动确定它们的类型。 这一特性减少了显式类型注解的需要,在保持类型安全的同时简化了代码。通过分析上下文和初始值,TypeSc…...
Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...
在Spring Boot中集成RabbitMQ的完整指南
前言 在现代微服务架构中,消息队列(Message Queue)是实现异步通信、解耦系统组件的重要工具。RabbitMQ 是一个流行的消息中间件,支持多种消息协议,具有高可靠性和可扩展性。 本博客将详细介绍如何在 Spring Boot 项目…...
python学习day39
图像数据与显存 知识点回顾 1.图像数据的格式:灰度和彩色数据 2.模型的定义 3.显存占用的4种地方 a.模型参数梯度参数 b.优化器参数 c.数据批量所占显存 d.神经元输出中间状态 4.batchisize和训练的关系 import torch import torchvision import torch.nn as nn imp…...
