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测…...
【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
什么是EULA和DPA
文章目录 EULA(End User License Agreement)DPA(Data Protection Agreement)一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA(End User License Agreement) 定义: EULA即…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
push [特殊字符] present
push 🆚 present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中,push 和 present 是两种不同的视图控制器切换方式,它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...
