当前位置: 首页 > news >正文

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封装的函数修改&#xff0c;代码如下&#xff1a; QStringList recList {"第一列", "第二列", "第三列"}; ui->tableWidget->setH…...

PyCharm 常用 的插件

Material Theme UI Lite&#xff1a;‌提供多种不同的页面风格&#xff0c;‌为PyCharm界面增添个性化元素。‌Chinese (Simplified) Language Pack&#xff1a;‌为中文用户提供简体中文的界面、‌菜单、‌提示信息&#xff0c;‌提升使用体验。‌Tabnine&#xff1a;‌基于人…...

理解 HTTP 请求中 Query 和 Body 的异同

本文将深入探讨HTTP请求中的两个关键要素&#xff1a;查询参数&#xff08;Query&#xff09;和请求体&#xff08;Body&#xff09;。我们将阐明它们之间的差异&#xff0c;并讨论在何种情况下使用每一种。 HTTP 请求概述 HTTP 请求是客户端&#xff08;如浏览器&#xff09…...

【AI大模型】 企业级向量数据库的选择与实战

前言 ChatGPT4相比于ChatGPT3.5,有着诸多不可比拟的优势&#xff0c;比如图片生成、图片内容解析、GPTS开发、更智能的语言理解能力等&#xff0c;但是在国内使用GPT4存在网络及充值障碍等问题&#xff0c;如果您对ChatGPT4.0感兴趣&#xff0c;可以私信博主为您解决账号和环境…...

LangChain开发框架并学会对大型预训练模型进行微调(fine-tuning)

要掌握LangChain开发框架并学会对大型预训练模型进行微调&#xff08;fine-tuning&#xff09;&#xff0c;你需要理解整个过程从数据准备到最终部署的各个环节。下面是这一流程的一个概览&#xff0c;并提供了一些关键步骤和技术点&#xff1a; 1. LangChain开发框架简介 La…...

VMware安装(有的时候启动就蓝屏建议换VM版本)

当你开始使用虚拟化技术来管理和运行多个操作系统时&#xff0c;VMware 是一个强大且广泛使用的选择。本篇博客将指导你如何安装 VMware Workstation Pro&#xff0c;这是一个功能强大的虚拟机软件&#xff0c;适用于个人和专业用户。 一、下载 VMware Workstation Pro 访问官网…...

AV1技术学习:Quantization

量化是对变换系数进行&#xff0c;并将量化索引熵编码。AV1的量化参数 QP 的取值范围是0 ~ 255。 一、Quantization Step Size 在给定的 QP 下&#xff0c;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的文章没有“树状目录管理”&#xff0c;所以我在这里整理几篇相关的博客链接。 操作有些麻烦。 CSS 两种盒模型 box-sizing content-box 和 border-box 流式布局 flow layout 弹性布局 flex layout HTML CSS 网格布局 grid layout HTML CSS...

网络安全 DVWA通关指南 DVWA Command Injection(命令注入)

DVWA Command Injection&#xff08;命令注入&#xff09; 文章目录 DVWA Command Injection&#xff08;命令注入&#xff09;LowMediumHighImpossible Low 1、分析网页源代码 <?php// 当表单提交按钮&#xff08;Submit&#xff09;被触发时执行以下代码 if (isset($_P…...

VUE3学习第三篇:报错记录

1、在我整理好前端代码框架后&#xff0c;而且也启动好了对应的后台服务&#xff0c;访问页面&#xff0c;正常。 2、报错ReferenceError: defineModel is not defined 学到这里报错了 在vue网站的演练场&#xff0c;使用没问题 但是在我自己的代码里就出问题了 3、watchEffec…...

CentOS怎么关闭自动锁屏?

禁止自动锁屏 有时候几分钟不用Centos&#xff0c;系统就自动锁屏了&#xff0c;这是一种安全措施&#xff0c;防止别人趁你不在时使用你的系统。但对于大部分人而言&#xff0c;这是没有必要的&#xff0c;尤其是Centos虚拟机&#xff0c;里面没啥重要的东西&#xff0c;每次…...

vscode 环境

这张截图显示的是在VS Code&#xff08;Visual Studio Code&#xff09;中选择Python解释器的界面。不同的Python解释器及其虚拟环境列出了可选项&#xff0c;用户可以根据需要选择合适的解释器来运行Python代码。以下是对截图中信息的详细解释&#xff1a; 解释器选择界面 当…...

浏览器自动化测试工具selenium——爬虫操作记录

selenium——是一款web自动化测试框架&#xff0c;其能模拟正常的用户操作&#xff0c;比如点击。但selenium并不是浏览器&#xff0c;没有执行js和解析html/css的能力&#xff0c;因此selenium需要和浏览器配合使用。 因为selenium可以模仿用户行为&#xff0c;因此selenium也…...

微信小程序配置访问服务器失败所发现的问题及解决方案

目录 事前现象问题1&#xff1a;问题现象&#xff1a;问题分析&#xff1a; 问题2&#xff1a;问题现象&#xff1a;问题分析&#xff1a;解决方案&#xff1a; 事后现象 事前现象 问题1&#xff1a; 问题现象&#xff1a; 在本地调试时&#xff0c;一切顺利&#xff0c;但一…...

javaEE(1)

一. Web开发概述 Web开发:指的是从网页中向后端程序发送请求,与后端程序进行交互 Web服务器:是一种软件,向浏览器等Web客户端提供文档等数据,实现数据共享,它是一个容器,是一个连接用户和程序之间的中间键 二. Web开发环境搭建 我们要实现前后端交互,首先需要中间键Web服务…...

极简Springboot+Mybatis-Plus+Vue零基础萌新都看得懂的分页查询(富含前后端项目案例)

目录 springboot配置相关 依赖配置 yaml配置 MySQL创建与使用 &#xff08;可拿软件包项目系统&#xff09; 创建数据库 创建数据表 mybatis-plus相关 Mapper配置 ​编辑 启动类放MapperScan 启动类中配置 添加config配置文件 Springboot编码 实体类 mapperc(Dao…...

IPython的Bash之舞:%%bash命令全解析

IPython的Bash之舞&#xff1a;%%bash命令全解析 IPython的%%bash魔术命令为Jupyter Notebook用户提供了一种在单元格中直接执行Bash脚本的能力。这个特性特别适用于需要在Notebook中运行系统命令或Bash特定功能的场景。本文将详细介绍如何在IPython中使用%%bash命令&#xff…...

ST Stellar-E SR5E1 22KW OBC combo 3KW DC-DC汽车充电器解决方案

对于全球的环境保护意识抬头&#xff0c;全球的汽车产业慢慢步入电动化的时代&#xff0c;以减少碳排放。整车系统主要是由电池、电驱、电控的三电所构成&#xff0c;其中电池系统是整车的动力来源&#xff0c;而对电池充电的OBC系统更甚重要。一具高度安全性且高效的OBC系统&a…...

Postman中的A/B测试实践:优化API性能的科学方法

Postman中的A/B测试实践&#xff1a;优化API性能的科学方法 在API开发和测试过程中&#xff0c;A/B测试是一种验证新功能或变更效果的有效方法。通过比较两个或多个版本&#xff08;例如A版本和B版本&#xff09;的性能&#xff0c;可以科学地评估变更的影响。Postman作为API测…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

C++.OpenGL (14/64)多光源(Multiple Lights)

多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...

python爬虫——气象数据爬取

一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...

大数据驱动企业决策智能化的路径与实践

&#x1f4dd;个人主页&#x1f339;&#xff1a;慌ZHANG-CSDN博客 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; 一、引言&#xff1a;数据驱动的企业竞争力重构 在这个瞬息万变的商业时代&#xff0c;“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...

自定义线程池1.2

自定义线程池 1.2 1. 简介 上次我们实现了 1.1 版本&#xff0c;将线程池中的线程数量交给使用者决定&#xff0c;并且将线程的创建延迟到任务提交的时候&#xff0c;在本文中我们将对这个版本进行如下的优化&#xff1a; 在新建线程时交给线程一个任务。让线程在某种情况下…...