QT tableWidget详细分析

一.定义

QTableWidget是一个用于显示表格数据的Qt控件,它是一个基于Qt Model/View框架的视图组件。QTableWidget提供了一种简单的方式来展示和编辑表格数据,用户可以通过添加行、列和单元格来构建一个完整的数据表格。

下面是一些QTableWidget的主要特点和功能:

  1. 显示数据:QTableWidget可以显示表格形式的数据,用户可以通过设置行数、列数和单元格内容来展示具体的数据。

  2. 编辑数据:用户可以在QTableWidget中直接编辑单元格的内容,以便对数据进行修改。

  3. 行列操作:用户可以通过API添加、删除、移动行列,来灵活地管理数据表格的结构。

  4. 布局调整:用户可以通过设置行高、列宽、单元格合并等方式来调整数据表格的布局。

  5. 选中操作:用户可以通过鼠标或键盘操作来选中单元格、行或列,以便进行相关的操作。

  6. 样式设置:用户可以通过设置表格的样式、颜色、字体等属性来美化表格的显示效果。

  7. 数据导出:QTableWidget支持将表格数据导出为文件(如CSV格式),以便用户进行其他处理或分享数据。

二.代码示例

#include <QtWidgets>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个QTableWidget对象,并设置行数和列数QTableWidget tableWidget;tableWidget.setRowCount(3);tableWidget.setColumnCount(2);// 设置表头QStringList headers;headers << "Name" << "Age";tableWidget.setHorizontalHeaderLabels(headers);// 向表格中添加数据QTableWidgetItem *item1 = new QTableWidgetItem("Alice");tableWidget.setItem(0, 0, item1);QTableWidgetItem *item2 = new QTableWidgetItem("25");tableWidget.setItem(0, 1, item2);QTableWidgetItem *item3 = new QTableWidgetItem("Bob");tableWidget.setItem(1, 0, item3);QTableWidgetItem *item4 = new QTableWidgetItem("30");tableWidget.setItem(1, 1, item4);QTableWidgetItem *item5 = new QTableWidgetItem("Eve");tableWidget.setItem(2, 0, item5);QTableWidgetItem *item6 = new QTableWidgetItem("22");tableWidget.setItem(2, 1, item6);// 显示表格tableWidget.show();return app.exec();
}

三.部分功能介绍

1.设置行高

#include <QtWidgets>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个QTableWidget对象,并设置行数和列数QTableWidget tableWidget;tableWidget.setRowCount(3);tableWidget.setColumnCount(2);// 设置表格每一行的高度tableWidget.verticalHeader()->setDefaultSectionSize(50); // 设置行高为50像素// 添加数据到表格中// 显示表格tableWidget.show();return app.exec();
}

2.设置自适应大小

setSizeAdjustPolicy()方法是用于设置QTableWidget的自适应策略的方法。可以通过该方法设置表格的大小自适应方式,以确保表格可以根据内容调整大小。

以下是该方法的常用参数:

  • QTableWidget::AdjustToContents:根据内容自动调整表格大小。
  • QTableWidget::AdjustToContentsOnFirstShow:第一次显示时根据内容自动调整表格大小。
  • QTableWidget::AdjustToContentsOnResize:调整表格大小以适应内容变化。
  • QTableWidget::Fixed:固定大小。
#include <QtWidgets>int main(int argc, char *argv[]) {QApplication app(argc, argv);// 创建一个QTableWidget对象,并设置行数和列数QTableWidget tableWidget;tableWidget.setRowCount(3);tableWidget.setColumnCount(2);// 设置表格每一行的高度tableWidget.verticalHeader()->setDefaultSectionSize(50); // 设置行高为50像素// 设置表格的自适应策略tableWidget.setSizeAdjustPolicy(QTableWidget::AdjustToContents);// 添加数据到表格中// 显示表格tableWidget.show();return app.exec();
}

3.插入数据

Qt中的 QTableWidget 类提供了方便的方法来插入和操作表格中的行和列,而您无需手动设置行号。当您向 QTableWidget 插入行时,会自动更新当前的行号,并且您可以通过该行号来访问和操作该行的数据。

#include <QtWidgets>int main(int argc, char *argv[])
{QApplication app(argc, argv);// 创建 QTableWidgetQTableWidget tableWidget;tableWidget.setColumnCount(2);// 插入一行并设置数据tableWidget.insertRow(0);tableWidget.setItem(0, 0, new QTableWidgetItem("Row 1, Column 1"));tableWidget.setItem(0, 1, new QTableWidgetItem("Row 1, Column 2"));// 插入另一行并设置数据tableWidget.insertRow(1);tableWidget.setItem(1, 0, new QTableWidgetItem("Row 2, Column 1"));tableWidget.setItem(1, 1, new QTableWidgetItem("Row 2, Column 2"));// 显示 QTableWidgettableWidget.show();return app.exec();
}

4.设置文字居中

要设置表格单元格中的文字居中,可以使用setAlignment()方法来指定单元格的对齐方式。

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
from PyQt5.QtCore import Qtapp = QApplication([])tableWidget = QTableWidget()
tableWidget.setRowCount(2)
tableWidget.setColumnCount(2)tableWidget.setItem(0, 0, QTableWidgetItem("Item 1"))
tableWidget.setItem(0, 1, QTableWidgetItem("Item 2"))
tableWidget.setItem(1, 0, QTableWidgetItem("Item 3"))
tableWidget.setItem(1, 1, QTableWidgetItem("Item 4"))# 设置单元格文字居中
for i in range(tableWidget.rowCount()):for j in range(tableWidget.columnCount()):item = tableWidget.item(i, j)item.setTextAlignment(Qt.AlignCenter)widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableWidget)
widget.setLayout(layout)widget.show()app.exec_()

5.设置是否可编辑

要设置Qt TableWidget中的单元格为可编辑或不可编辑模式,可以使用setEditTriggers()方法。以下是一个示例代码,演示如何设置单元格为可编辑

from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget, QAbstractItemViewapp = QApplication([])tableWidget = QTableWidget()
tableWidget.setRowCount(2)
tableWidget.setColumnCount(2)tableWidget.setItem(0, 0, QTableWidgetItem("Editable"))
tableWidget.setItem(0, 1, QTableWidgetItem("Not Editable"))
tableWidget.setItem(1, 0, QTableWidgetItem("Editable"))
tableWidget.setItem(1, 1, QTableWidgetItem("Not Editable"))# 设置第一列为可编辑模式,第二列为不可编辑模式
tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked)  # 设置双击可编辑widget = QWidget()
layout = QVBoxLayout()
layout.addWidget(tableWidget)
widget.setLayout(layout)widget.show()app.exec_()

 

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

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

相关文章

The Missing Semester of Your CS Education(计算机教育中缺失的一课)

Shell 工具和脚本(Shell Tools and Scripting) 一、shell脚本 1.1、变量赋值 在bash中为变量赋值的语法是foobar&#xff0c;访问变量中存储的数值&#xff0c;其语法为 $foo。 需要注意的是&#xff0c;foo bar &#xff08;使用空格隔开&#xff09;是不能正确工作的&…

网工内推 | 香港移动,10年以上数通经验,CCIE,5W-6W

01 香港移动招聘 &#x1f537;招聘岗位&#xff1a;网络工程师 &#x1f537;岗位要求&#xff1a; 需要有10年及以上数通经验&#xff0c;有CCIE 证书&#xff0c;懂技术管理&#xff0c;沟通畅通 &#x1f537;语言要求&#xff1a; 粤语英语 &#x1f537;薪资&#xff1…

基于灰狼优化算法优化RBF(GWO-RBF)的数据回归预测(多输入多输出)

代码原理及流程 基于灰狼优化算法优化多输入多输出&#xff08;MIMO&#xff09;的RBF神经网络的数据回归预测&#xff0c;可以采取以下步骤&#xff1a; 1. 数据准备&#xff1a;准备包含多个输入特征和多个输出目标的数据集&#xff0c;确保数据已经经过预处理和归一化。 …

TCP - 半连接队列和全连接队列

目录 一、半连接队列和全连接队列的概念 二、全连接队列溢出 三、半连接队列溢出 一、半连接队列和全连接队列的概念 1. 半连接队列&#xff1a;服务端收到客户端发送的 SYN 包时&#xff0c;内核会将该连接加入半连接 SYN 队列&#xff0c;并向客户端返回响应 2. 全连接队…

CSS基础(第二天)

Emmet语法 快速生成HTML结构语法 1. 生成标签 直接输入标签名 按tab键即可 比如 div 然后tab 键&#xff0c; 就可以生成 <div></div> 2. 如果想要生成多个相同标签 加上 * 就可以了 比如 div*3 就可以快速生成3个div 3. 如果有父子级关系的标签&#xff0c;可以…

算法刷题笔记 数的范围(C++实现)(二分法重要例题)

文章目录 题目描述题目思路题目代码&#xff08;C&#xff09;题目感想 题目描述 给定一个按照升序排列的长度为n的整数数组&#xff0c;以及q个查询。对于每个查询&#xff0c;返回一个元素k的起始位置和终止位置&#xff08;位置从0开始计数&#xff09;。如果数组中不存在该…

Docker【2】iptables 错误解决

iptables 错误解决 问题说明问题分析解决步骤1. 确保 iptables 模块已加载2. 检查和重启 docker 服务3. 检查 firewalld 状态4. 重置 iptables 规则5. 查看和更新 Docker 配置 总结 问题说明 执行的 docker 命令如下&#xff0c;启动 nginx 并设置宿主机端口 (8080) 与容器端口…

学习Uni-app开发小程序Day25

这一章学习了触底加载更多阻止无效的网络请求、分类列表存入Storage在预览页面读取缓存展示、通过swiper的事件实现真正的壁纸预览及切换 触底加载更多阻止无效的网络请求、load-more样式的展现 前面已经学习了当列表触底后&#xff0c;会继续加载&#xff0c;当到最后一层后…

自动化测试--利用pytest实现整条业务链路测试

​ 概述 前面一章讲解了单个接口的测试&#xff0c;但是实际项目中&#xff0c;因为权限和登录状态的限制&#xff0c;大部分接口没办法直接访问到&#xff0c;这时候我们想访问到一个系统的接口&#xff0c;就需要模拟用户登录拿到用户的token和所拥有的权限之后再将这些信息…

vivado2020.2创建hls仿真工程实现led闪烁

下载vivado2020.2后会有这个出现在桌面 点击进入创建工程&#xff0c;这里注意不要有前面的\我再复制的时候复制错了导致创建失败 按f光标就会跳转到下一个f开头的函数处&#xff0c;要查找其他函数也同理 生成了一个synthesis summary文件 找到目录下生成的.v文件 an 点…

Pod进阶——资源限制以及探针检查

目录 一、资源限制 1、资源限制定义&#xff1a; 2、资源限制request和limit资源约束 3、Pod和容器的资源请求和限制 4、官方文档示例 5、CPU资源单位 6、内存资源单位 7、资源限制实例 ①编写yaml资源配置清单 ②释放内存&#xff08;node节点&#xff0c;以node01为…

【知识蒸馏】多任务模型 logit-based 知识蒸馏实战

一、什么是逻辑&#xff08;logit&#xff09;知识蒸馏 Feature-based蒸馏原理是知识蒸馏中的一种重要方法&#xff0c;其关键在于利用教师模型的隐藏层特征来指导学生模型的学习过程。这种蒸馏方式旨在使学生模型能够学习到教师模型在特征提取和表示方面的能力&#xff0c;从…

有些错误,常犯常新、常新常犯:记录一个使用element-plus的tooltip组件的错误

使用element-plus的tooltip组件&#xff0c;最开始的写法是这样的&#xff1a; <el-tooltipclass"box-item"effect"dark"content"tooltip content" ><el-button v-if"isDisabled" :underline"false" type"pr…

持续总结中!2024年面试必问 20 道 Redis面试题(五)

上一篇地址&#xff1a;持续总结中&#xff01;2024年面试必问 20 道 Redis面试题&#xff08;四&#xff09;-CSDN博客 九、Redis的同步机制了解么&#xff1f; Redis 的同步机制是其复制策略的核心部分&#xff0c;确保数据在主节点&#xff08;master&#xff09;和从节点…

【C语言】程序员自我修养之文件操作

【C语言】程序员自我修养之文件操作 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;C语言学习之路 文章目录 【C语言】程序员自我修养之文件操作前言一.文件介绍1.1为什么使用文件1.2文件分类1.3二进制文件和文本文件 二.文件的打开和关闭2.…

桌面藏线大法

1有线改无线&#xff1a; 蓝牙鼠标 蓝牙键盘 蓝牙耳机 2将排插贴到桌子底下 购物软件上搜 3断舍离 不要的电子产品统统扔掉 4 洞洞板和挂钩 这个不用介绍了

爬虫基本原理及requests库用法

文章目录 一、爬虫基本原理1、什么是爬虫2、爬虫的分类3、网址的构成4、爬虫的基本步骤5、动态【异步】页面和静态【同步】页面6、请求头 二、requests基本原理及使用1、chrome 抓包按钮详解1.1 Elements1.2 元素定位器1.3 Network1.4 All1.5 XHR1.6 Preserve log1.7 手机模式1…

暴雨信息液冷计算解决方案亮相CCIG 2024

5月24日&#xff0c;2024中国图象图形大会&#xff08;CCIG&#xff09;在陕西西安正式开幕。作为涵盖图像图形各专业领域的综合性的全国性学术会议&#xff0c;CCIG面向开放创新、交叉融合的发展趋势&#xff0c;为图像图形相关领域的专家学者和产业界的同仁&#xff0c;搭建了…

Java+Spring+ MySQL + MyCat云HIS有哪些优势?智慧医疗云(HIS)低成本与安全保障的完美结合

JavaSpring MySQL MyCat云HIS有哪些优势&#xff1f;智慧医疗云(HIS)低成本与安全保障的完美结合 云HIS的优点包括节省成本、便捷高效、稳妥安全等。通过云HIS&#xff0c;医疗机构无需在本地建立机房、购买服务器和应用软件&#xff0c;降低了硬件和人力成本。同时&#xff0…

虚拟化介绍

虚拟化介绍 概述概念特点优势实现手段 虚拟化架构概述寄居虚拟化架构裸金属虚拟化架构操作系统虚拟化架构混合虚拟化架构几种虚拟化架构的比较虚拟化架构与虚拟化技术的关系 虚拟化技术分类服务器虚拟化技术分类 存储虚拟化技术分类网络虚拟化技术分类 服务器虚拟化技术处理器虚…