QTableWidget 表格部件

news2025/3/12 17:34:16

QTableWidget是QT中的表格组件类。一般用来展示多行多列的数据,是QT中使用较多的控件之一。
1、QTableWidgetItem对象

QTableWidget中的每一个单元格都是一个QTableWidgetItem对象,因此先介绍下QTableWidgetItem的常用方法
1.1、设置文本内容

void QTableWidgetItem::setText(const QString &text)

1.2、设置对齐方式

void QTableWidgetItem::setTextAlignment(int alignment)

1.3、设置单元格背景色

void QTableWidgetItem::setBackground(const QBrush &brush)

1.4、设置单元格显示图标

void QTableWidgetItem::setIcon(const QIcon &icon)

1.5、设置单元格字体

void QTableWidgetItem::setFont(const QFont &font)

1.6、获取单元格文本内容

QString QTableWidgetItem::text() const

2、设置QTableWidget的表头

创建一个QT Widget Application。

ui.setupUi(this);

//设置列数
ui.tableWidget->setColumnCount(3);

QTableWidgetItem *item0 = new QTableWidgetItem;
QTableWidgetItem *item1 = new QTableWidgetItem;
QTableWidgetItem *item2 = new QTableWidgetItem;

//设置显示内容
item0->setText("姓名");
item1->setText("年龄");
item2->setText("学号");

//设置水平表头
ui.tableWidget->setHorizontalHeaderItem(0, item0);
ui.tableWidget->setHorizontalHeaderItem(1, item1);
ui.tableWidget->setHorizontalHeaderItem(2, item2);

 效果

 3、初始化数据

//初始化数据
//添加数据时,一定要设置行数,否则数据不会展示出来
ui.tableWidget->setRowCount(2);

QTableWidgetItem* name0 = new QTableWidgetItem;
QTableWidgetItem* name1 = new QTableWidgetItem;
QTableWidgetItem* age0 = new QTableWidgetItem;
QTableWidgetItem* age1 = new QTableWidgetItem;
QTableWidgetItem* code0 = new QTableWidgetItem;
QTableWidgetItem* code1 = new QTableWidgetItem;

name0->setText("张大");
name1->setText("张二");

age0->setText("30");
age1->setText("35");

code0->setText("1234");
code1->setText("1235");

//为指定的某行或某列设置item
ui.tableWidget->setItem(0, 0, name0);
ui.tableWidget->setItem(1, 0, name1);

ui.tableWidget->setItem(0, 1, age0);
ui.tableWidget->setItem(1, 1, age1);

ui.tableWidget->setItem(0, 2, code0);
ui.tableWidget->setItem(1, 2, code1);

效果

 4、插入数据

//在末尾插入数据
int curRow = ui.tableWidget->rowCount();
ui.tableWidget->insertRow(curRow);

QTableWidgetItem* name2 = new QTableWidgetItem;
QTableWidgetItem* age2 = new QTableWidgetItem;
QTableWidgetItem* code2 = new QTableWidgetItem;

name2->setText("李大");
age2->setText("34");
code2->setText("1236");

ui.tableWidget->setItem(curRow, 0, name2);
ui.tableWidget->setItem(curRow, 1, age2);
ui.tableWidget->setItem(curRow, 2, code2);

效果

 5、遍历数据

//遍历数据
QTableWidgetItem* item;
QString str;
for (int i = 0; i < ui.tableWidget->rowCount(); i++) {
	for (int j = 0; j < ui.tableWidget->columnCount(); j++) {
		item = ui.tableWidget->item(i, j);
		str = str + item->text() + " ";
	}
}

qDebug() << "str = " << str;

效果

注意:

1.cpp上方包含 #include <QDebug>

2.将项目设置为 控制台输出

 6、常用信号

单元格发生切换时,发射两个信号

//currentRow, currentColumn   当前点击的单元格
//previousRow, previousColumn  先前具有焦点的单元格
void QTableWidget::currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)
 
//current 当前点击的单元格
//previous 先前具有焦点的单元格
void QTableWidget::currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)

7、删除选中行

int curRow = ui.tableWidget->currentRow();
ui.tableWidget->removeRow(curRow);

8、表头的设置
8.1、设置每一行最后一个单元格不留空格

//标头中最后一个可见段是否拉伸至所有可用空间
ui->tableWidget->horizontalHeader()->setStretchLastSection(true);
ui.tableWidget->horizontalHeader()->setStretchLastSection(false);

直接看下效果

8.2、设置自适应大小

//标头根据“内容”自动调整大小
ui.tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);

效果

8.3、设置等宽

ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

效果

9、其他常用设置
9.1、获取行数列数

int QTableWidget::rowCount() const

int QTableWidget::columnCount() const

9.2、获取当前单元格行号列号

int QTableWidget::currentRow() const

int QTableWidget::currentColumn() const

9.3、设置单元格内容是否可编辑

void setEditTriggers(EditTriggers triggers)
 
9.4、设置选择方式是 单元格选择 还是行选择

void setSelectionBehavior(QAbstractItemView::SelectionBehavior behavior)

QAbstractItemView::SelectItems      //单元格选择模式

QAbstractItemView::SelectRows      //行选择模式

QAbstractItemView::SelectColumns //列选择模式
Qt手册的使用

上面介绍是QTableWidget较常用的一些方法,使用这些方法进行基本的数据展示和读取完全够用了,如果你要用到其他一些功能,可自行去查阅qt手册。

参考原文链接:https://blog.csdn.net/new9232/article/details/122894697

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

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

相关文章

陪诊系统|陪诊系统开发|陪诊小程序开发指南

随着移动互联网的快速发展&#xff0c;陪诊小程序的出现为医疗服务行业带来了全新的便捷体验。无需排队、无需等待&#xff0c;只需轻轻一点&#xff0c;陪诊小程序即可为患者提供全方位的陪诊服务。本文将为您介绍陪诊小程序的开发流程和其功能特点&#xff0c;帮助您了解并投…

java模拟GPT流式问答

流式请求gpt并且流式推送相关前端页面 1&#xff09;java流式获取gpt答案 1、读取文件流的方式 使用post请求数据&#xff0c;由于gpt是eventsource的方式返回数据&#xff0c;所以格式是data&#xff1a;&#xff0c;需要手动替换一下值 /** org.apache.http.client.metho…

如何选择适合您需求的SOCKS5代理

SOCKS5协议是最新版本的SOCKS协议&#xff0c;它带来了一系列重要特点&#xff0c;相对于SOCKS4来说引入了许多重要特性&#xff1a; 1. 更多身份验证选项&#xff1a; SOCKS5通过更完整的TCP连接和SSH隧道方法路由流量&#xff0c;支持多种身份验证方法&#xff0c;增强了安全…

竞赛选题 深度学习 机器视觉 车位识别车道线检测 - python opencv

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习 机器视觉 车位识别车道线检测 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f947;学长这里给一个题目综合评分(每项满分5分) …

干货分享|腾讯内部项目管理PPT

我是胖圆&#xff0c;欢迎大家关注留言~ 或者移步公众号【胖圆说PM】找我~

HashMap -- 调研

HashMap 调研 前言JDK1.8之前拉链法: JDK1.8之后JDK1.7 VS JDK1.8 比较优化了一下问题: HashMap的put方法的具体流程?HashMap的扩容resize操作怎么实现的? 前言 在Java中&#xff0c;保存数据有两种比较简单的数据结构:数组和链表。 数组的特点是:寻址容易&#xff0c;插入…

Java实现防重复提交,使用自定义注解的方式

目录 1.背景 2.思路 3.实现 创建自定义注解 编写拦截器 4.使用 5.验证 6.总结 1.背景 在进行添加操作时&#xff0c;防止恶意点击&#xff0c;后端进行请求接口的防重复提交 2.思路 通过拦截器搭配自定义注解的方式进行实现&#xff0c;拦截器拦截请求&#xff0c;使…

如何在 Keras 中开发具有注意力的编码器-解码器模型

link 【翻译自 &#xff1a; How to Develop an Encoder-Decoder Model with Attention in Keras 】 【说明&#xff1a;Jason Brownlee PhD大神的文章个人很喜欢&#xff0c;所以闲暇时间里会做一点翻译和学习实践的工作&#xff0c;这里是相应工作的实践记录&#xff0c;…

大数据Doris(八):启动FE步骤

文章目录 启动FE步骤 一、配置环境变量 二、​​​​​​​创建doris-mate

变分自动编码器 (VAE)02/2 PyTorch 教程

一、说明 在自动编码器中&#xff0c;来自输入数据的信息被映射到固定的潜在表示中。当我们旨在训练模型以生成确定性预测时&#xff0c;这特别有用。相比之下&#xff0c;变分自动编码器&#xff08;VAE&#xff09;将输入数据转换为变分表示向量&#xff08;顾名思义&#xf…

气象台卫星监测vr交互教学增强学生的学习兴趣和动力

对地观测是以地球为研究对象&#xff0c;依托卫星、飞船等光电仪器&#xff0c;进行各种探测活动&#xff0c;其核心是遥感技术&#xff0c;因此为了让遥感专业学员能提前熟悉对地观测规则、流程、方法及注意事项&#xff0c;借助VR虚拟现实制作的三维仿真场景&#xff0c;能让…

全新彩虹商城时光模板知识付费系统源码+内有5000多商品+易支付源码

源码简介&#xff1a; 全新彩虹商城时光模板知识付费系统源码&#xff0c;这是最新的彩虹知识付费商城系统&#xff0c;具备众多强大且实用的功能。首先&#xff0c;它支持二级分类和多级分销&#xff0c;使得商品分类更为清晰&#xff0c;销售网络更具扩展性。 其次&#xf…

机器人轨迹规划算法的研究现状

近年来&#xff0c;随着机器人技术的迅速发展&#xff0c;机器人在工业、医疗、军事等领域的应用越来越广泛。机器人轨迹规划是机器人控制的重要环节之一&#xff0c;它决定了机器人在执行任务时的运动轨迹&#xff0c;直接影响机器人的精度、速度和稳定性。因此&#xff0c;机…

【PCIE720】基于PCIe总线架构的高性能计算(HPC)硬件加速卡

PCIE720是一款基于PCI Express总线架构的高性能计算&#xff08;HPC&#xff09;硬件加速卡&#xff0c;板卡采用Xilinx的高性能28nm 7系列FPGA作为运算节点&#xff0c;在资源、接口以及时钟的优化&#xff0c;为高性能计算提供卓越的硬件加速性能。板卡一共具有5个FPGA处理节…

代码混淆界面介绍

代码混淆界面介绍 代码混淆功能包括oc&#xff0c;swift&#xff0c;类和函数设置区域。其他flutter&#xff0c;混合开发的最终都会转未oc活着swift的的二进制&#xff0c;所以没有其他语言的设置。 代码混淆功能分顶部的显示控制区域&#xff1a;显示方式&#xff0c;风险等…

python 深度学习 解决遇到的报错问题6

目录 一、解决报错HTTPSConnectionPool(hosthuggingface.co, port443): Max retries exceeded with url: /bert-base-uncased/resolve/main/vocab.txt (Caused by ConnectTimeoutError(, Connection to huggingface.co 如何从huggingface官网下载模型 二、nx.draw if cf._ax…

jupyter 切换虚拟环境

当前只有两个环kernel 我已经创建了很多虚拟环境&#xff0c;如何在notebook中使用这些虚拟环境呢&#xff1f;请看下面 比如说我要添加nlp 这个虚拟环境到notebook中 1. 切换到nlp环境 2. 安装如下模块 pip install ipykernel 3. 执行如下命令 python -m ipykernel install …

VS2019如何显示和去除控制台页面

这是控制台页面&#xff1a; 方法&#xff1a; 选中目标项目&#xff0c;右键--->属性--->配置属性--->链接器--->系统--->子系统--->(窗口/控制台)

地级市HVV | 未授权访问合集

在网站前后端分离盛行下&#xff0c;将大部分权限控制交给前端&#xff0c;导致js中隐藏未授权或者可绕过的前端鉴权。前后端分离的好处是提高开发效率&#xff0c;同时防止黑客更直接的对服务器造成危害&#xff0c;但权限控制的工作量全部交给前端会导致大量页面未授权或者后…

面试经典 150 题 1 —(双指针)— 125. 验证回文串

125. 验证回文串 方法一 class Solution { public:bool isPalindrome(string s) {string newStr "";for(int fast 0; fast < s.size(); fast){if(isalnum(s[fast]))){newStr tolower(s[fast]);}}string tmp newStr;reverse(tmp.begin(), tmp.end());if(strcm…