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)));
}

三、结语

        以上便是我自己学习表格使用过程中常用的方法了,后续有经验了会补充。

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

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

相关文章

STM32 智能家居自动化控制系统教程

目录 引言环境准备智能家居自动化控制系统基础代码实现&#xff1a;实现智能家居自动化控制系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;家居控制与优化问题解决方案与优化收尾与总结 1. 引言 智能家…

【第一天】计算机网络 TCP/IP模型和OSI模型,从输入URL到页面显示发生了什么

TCP/IP模型和OSI模型 这两个模型属于计算机网络的体系结构。 OSI模型是七层模型&#xff0c;从上到下包括&#xff1a; 应用层&#xff0c;表示层&#xff0c;会话层&#xff0c;传输层&#xff0c;网络层&#xff0c;数据链路层&#xff0c;物理层 TCP/IP模型是四层模型&…

谷粒商城实战笔记-52~53-商品服务-API-三级分类-新增-修改

文章目录 一&#xff0c;52-商品服务-API-三级分类-新增-新增效果完成1&#xff0c;点击Append按钮&#xff0c;显示弹窗2&#xff0c;测试完整代码 二&#xff0c;53-商品服务-API-三级分类-修改-修改效果完成1&#xff0c;添加Edit按钮并绑定事件2&#xff0c;修改弹窗确定按…

C++学习笔记01-语法基础(问题-解答自查版)

前言 以下问题以Q&A形式记录&#xff0c;基本上都是笔者在初学一轮后&#xff0c;掌握不牢或者频繁忘记的点 Q&A的形式有助于学习过程中时刻关注自己的输入与输出关系&#xff0c;也适合做查漏补缺和复盘。 本文对读者可以用作自查&#xff0c;答案在后面&#xff0…

解决llama_index中使用Ollama出现timed out 问题

现象&#xff1a; File "~/anaconda3/envs/leo_py38/lib/python3.8/site-packages/httpx/_transports/default.py", line 86, in map_httpcore_exceptionsraise mapped_exc(message) from exc httpx.ReadTimeout: timed out代码&#xff1a; from llama_index.core …

反转链表 - 力扣(LeetCode)

206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* reverseList(struct ListNode* head) {if(head NULL)return NULL;else{struct Lis…

【iOS】——属性关键字的底层原理

strong&#xff0c;retain&#xff0c;copy&#xff0c;atomic&#xff0c;nonatomic c源码 interface propertyTest : NSObject property (nonatomic, strong) NSString *nsstring___StrongTest; property (nonatomic, retain) NSString *nsstring___RetainTest; property (n…

STM32--HAL库--定时器篇

一&#xff1a;如何配置定时器 打开对应工程串口配置好的工程&#xff08;上一篇博客&#xff09;做如下配置&#xff1a; 定时器的中断溢出时间计算公式是&#xff1a; 由图得T100*1000/100MHz 注&#xff1a;100MHz100000000 所以溢出时间等于1ms 关于上图4的自动重装…

ARM功耗管理之Suspend-to-RAM实验

安全之安全(security)博客目录导读 ARM功耗管理精讲与实战汇总参见&#xff1a;Arm功耗管理精讲与实战 思考&#xff1a;睡眠唤醒实验&#xff1f;压力测试&#xff1f;Suspend-to-Idle/RAM/Disk演示&#xff1f; 1、实验环境准备 2、软件代码准备 3、唤醒源 4、Suspen…

计算机技术基础 (bat 批处理)Note4

计算机技术基础 &#xff08;bat 批处理&#xff09;Note4 本节主要讲解一些 bat 批处理文件中的一些特殊符号&#xff0c;包括 , %, > 和 >>, |, ^, & 和 && 和 ||, " ", ,, ;, ()。 回显屏蔽符 回显屏蔽符 : 这个字符在批处理中的意思是关…

把redis用在Java项目

1. Java连接redis Java连接redis的方式是通过jedis&#xff0c;连接redis需要遵循jedis协议。 1.1 引入依赖 <!--引入java连接redis的驱动--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&…

linux 部署flask项目

linux python环境安装: https://blog.csdn.net/weixin_41934979/article/details/140528410 1.创建虚拟环境 python3.12 -m venv .venv 2.激活环境 . .venv/bin/activate 3.安装依赖包(pip3.12 install -r requirements.txt) pip3.12 install -r requirements.txt 4.测试启…

SpringBoot 后端接收参数优化(统一处理前端参数)

在使用 SpringBoot MyBatisPlus 框架的项目&#xff0c;写了个后端统一处理前端post提交的json格式的查询参数类&#xff0c;赖得手工一个一个参数处理&#xff08;把要查询的参数交给前端&#xff09;。 使用示例代码&#xff1a; PostMapping("/list")public Strin…

PyQt5 数据库操作详细教程

PyQt5 数据库操作详细教程 PyQt5 提供了丰富的数据库操作功能&#xff0c;使得在图形用户界面&#xff08;GUI&#xff09;应用程序中进行数据库连接和操作变得简单。本教程将详细介绍如何使用 PyQt5 连接和操作数据库&#xff0c;包括 SQLite、MySQL 等&#xff0c;并通过丰富…

门控循环单元(GRU)及其预测和分类Python实现

门控循环单元&#xff08;Gated Recurrent Unit&#xff0c;简称GRU&#xff09;是一种常用于处理序列数据的循环神经网络&#xff08;RNN&#xff09;变种。GRU模型结合了长短时记忆网络&#xff08;LSTM&#xff09;和标准循环神经网络的优点&#xff0c;通过门控机制帮助网络…

深入解析Perl的正则表达式:功能、应用与技巧

在编程世界中&#xff0c;正则表达式是一种强大的文本处理工具&#xff0c;它能够用于搜索、替换、匹配字符串等操作。Perl语言以其强大的文本处理能力著称&#xff0c;而其正则表达式功能更是其核心特性之一。本文将深入探讨Perl中的正则表达式&#xff0c;包括其基本语法、应…

微服务安全——OAuth2详解、授权码模式、SpringAuthorizationServer实战、SSO单点登录、Gateway整合OAuth2

文章目录 Spring Authorization Server介绍OAuth2.0协议介绍角色OAuth2.0协议的运行流程应用场景授权模式详解客户端模式密码模式授权码模式简化模式token刷新模式 OAuth 2.1 协议介绍授权码模式PKCE扩展设备授权码模式拓展授权模式 OpenID Connect 1.0协议Spring Authorizatio…

EXO-chatgpt_api 解释

目录 chatgpt_api 解释 resolve_tinygrad_tokenizer 函数 resolve_tokenizer 函数 调试和日志记录 参数 返回值 初始化方法 __init__ 异步方法 注意事项 chatgpt_api 解释 展示了如何在一个项目中组织和导入各种库、模块和类,以及如何进行一些基本的Web服务设置和配置…

Sparksql常用的json相关函数

前言 在大数据处理中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。Apache Spark 提供了丰富的功能来处理 JSON 数据,尤其是通过 Spark SQL 的 JSON 函数。本文将深入探讨 Spark SQL 中的 JSON 函数,并使用…

机器学习 | 回归算法原理——最小二乘法

Hi&#xff0c;大家好&#xff0c;我是半亩花海。很早便想学习并总结一本很喜欢的机器学习图书——立石贤吾的《白话机器学习的数学》&#xff0c;可谓通俗易懂&#xff0c;清晰形象。那就在此分享并作为学习笔记来记录我的学习过程吧&#xff01;本章的回归算法原理基于《基于…