qt QTableWidgetItem详解

1、概述

QTableWidgetItem 是 Qt 框架中的一个类,专门用于在 QTableWidget(一个基于项的表格视图)中表示单个单元格的内容。QTableWidget 继承自 QAbstractItemView,而 QTableWidgetItem 则作为表格中的一个单元格项,可以包含文本、图标、复选框或其他用户定义的数据。通过 QTableWidgetItem,用户可以轻松地管理表格中的数据和交互。

2、重要方法

QTableWidgetItem 提供了多种方法来设置和获取单元格的内容,以下是一些关键的方法:

  • setText:设置单元格的文本内容。
  • text:获取单元格的文本内容。
  • setIcon:为单元格设置图标。
  • icon:获取单元格的图标。
  • setData 和 data:为单元格设置和获取自定义数据(通常使用 Qt::UserRole 或更高的枚举值作为键)。
  • setFont 和 font:设置和获取单元格的字体。
  • setBackgroundColor 和 backgroundColor(注意:直接设置背景色可能不是 QTableWidgetItem 的方法,通常需要通过样式表或委托来实现):设置和获取单元格的背景颜色。
  • setForeground 和 foreground(同样,直接设置前景色可能需要通过样式表或委托):设置和获取单元格的前景色(文本颜色)。
  • setCheckState:如果 QTableWidget 设置为支持复选框,则此方法可以设置单元格的选中状态(Qt::Unchecked、Qt::PartiallyChecked、Qt::Checked)。
  • checkState:获取单元格的选中状态。
  • setFlags 和 flags:设置和获取单元格的交互标志(如是否可选、是否可编辑等)。
3、重要信号

与 QListWidgetItem 不同,QTableWidgetItem 本身不直接发射信号。信号通常由 QTableWidget 发射,以响应单元格的更改或用户交互。以下是一些与 QTableWidgetItem 相关的 QTableWidget 信号:

  • cellClicked:当用户点击表格中的某个单元格时发射。
  • cellDoubleClicked:当用户双击表格中的某个单元格时发射。
  • cellPressed:当用户按下鼠标按钮在表格中的某个单元格上时发射。
  • cellReleased:当用户释放鼠标按钮在表格中的某个单元格上时发射。
  • cellChanged:当表格中的某个单元格的内容发生变化时发射(注意:这通常要求单元格是可编辑的,且内容实际发生了改变,但 QTableWidget 默认不支持直接编辑单元格,这可能需要自定义委托)。
  • currentCellChanged:当当前选中的单元格发生变化时发射。
  • itemChanged:虽然这是 QListWidget 的一个信号,但 QTableWidget 也有类似的机制来检测单元格内容的更改,通常也是通过自定义委托来实现的。
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
{
    setWindowTitle("QTableWidgetItem Example");
    resize(600, 400);

    // 创建表格控件
    QTableWidget *tableWidget = new QTableWidget(4, 3);
    tableWidget->setHorizontalHeaderLabels({"Name", "Age", "Occupation"});

    // 填充表格数据
    tableWidget->setItem(0, 0, new QTableWidgetItem("Alice"));
    tableWidget->setItem(0, 1, new QTableWidgetItem("30"));
    tableWidget->setItem(0, 2, new QTableWidgetItem("Engineer"));

    tableWidget->setItem(1, 0, new QTableWidgetItem("Bob"));
    tableWidget->setItem(1, 1, new QTableWidgetItem("25"));
    tableWidget->setItem(1, 2, new QTableWidgetItem("Designer"));

    tableWidget->setItem(2, 0, new QTableWidgetItem("Charlie"));
    tableWidget->setItem(2, 1, new QTableWidgetItem("35"));
    tableWidget->setItem(2, 2, new QTableWidgetItem("Manager"));

    tableWidget->setItem(3, 0, new QTableWidgetItem("David"));
    tableWidget->setItem(3, 1, new QTableWidgetItem("40"));
    tableWidget->setItem(3, 2, new QTableWidgetItem("Director"));

    // 创建按钮
    QPushButton *addButton = new QPushButton("Add Row");

    // 添加新行
    connect(addButton, &QPushButton::clicked, this, [tableWidget]() {
        static int rowCount = 4;
        tableWidget->insertRow(rowCount);
        tableWidget->setItem(rowCount, 0, new QTableWidgetItem("New Name"));
        tableWidget->setItem(rowCount, 1, new QTableWidgetItem("New Age"));
        tableWidget->setItem(rowCount, 2, new QTableWidgetItem("New Occupation"));
        rowCount++;
    });

    // 布局管理
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(tableWidget);
    layout->addWidget(addButton);
    QWidget *centralWidget = new QWidget;
    centralWidget->setLayout(layout);

    setCentralWidget(centralWidget);
}

觉得有帮助的话,打赏一下呗。。

           

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

常见 HTTP 状态码分类和解释及服务端向前端返回响应时的最完整格式

目前的开发项目,准备明年的国产化,用了十年的自研系统借这个机会全部重写,订立更严格的规范,这里把返回格式及对应状态码记录一下。 常见 HTTP 状态码及解释 HTTP 状态码用于表示客户端请求的响应状态,它们分为五类&a…

卖模版还能赚到钱吗?

说到赚钱,我想大部分人都会感兴趣。但如果告诉大家现阶段卖模板也能赚钱,可能还是有人不信。我要说说我的观察了。 本文可在公众号「德育处主任」免费阅读 我是一只临期程序猿,我最早接触到“模板能卖钱”这个概念是在模板王里。模板王平台上…

基于ssm的个人健康管理系统

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…

DB-GPT系列(三):底层大模型设置(开源模型、在线模型)

前面两篇文章分别对 DB-GPT 的总体情况进行了介绍,同时涵盖了镜像一键部署与源码部署这两种部署方式。 DB-GPT系列(一):DB-GPT能帮你做什么? DB-GPT系列(二):DB-GPT部署&#xff0…

易思智能物流无人值守系统 ExportReport SQL注入漏洞复现

0x01 产品简介 易思无人值守智能物流系统‌是一款集成了人工智能、机器人技术和物联网技术的创新产品。它能够自主完成货物存储、检索、分拣、装载以及配送等物流作业,帮助企业实现无人值守的智能物流运营,提高效率、降低成本,为现代物流行业带来新的发展机遇。该系统旨在为…

stm32 ADC实例解析(3)-多通道采集互相干扰的问题

文章目录 一、问题现象:二、原因分析:1、测量值不准问题分析:2、采样干扰问题分析 三、解决办法:1、硬件:(1)、电源供电(2)、引脚电容(3)、减少采…

ASP.NET Core 路由规则,自定义特性路由 ,IActionConstraint 路由约束 总结 mvc

资料 资料 路由服务 路由服务是在 Program.cs 中使用 builder.Services.AddRouting()注册的, 只是默认在 builder 之前已经注册过了,无需我们再次注册。 AddRouting()方法必须在 UseRouting()方法之前运行,它是路由的基础服务。 MapContro…

在数据库设计中,如何避免全表扫描?

2024年10月NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。百度文心快码总经理臧志分享了《AI原生研发新范式的实践与思考》,探讨了大模型赋能下的研发变革及如何在公司和行业中落地,AI原生研发新范式的内涵和推动经验。 …

Maven的安装配置

文章目录 一、MVN 的下载二、配置maven2.1、更改maven/conf/settings.xml配置2.2、配置环境变量一、MVN 的下载 还是那句话,要去就去官网或者github,别的地方不要去下载。我们下载binaries/ 目录下的 cd /opt/server wget https://downloads.apache.org/maven/maven-3/3.9.6/…

ReactPress系列—NestJS 服务端开发流程简介

ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议,感谢Star。 NestJS 服务端开发流程简介 NestJS 是一个用于构建高效、可靠和可扩展的服务器端应用程序的框架。它使用 TypeScript(但也支持纯 Java…

Redis数据库测试和缓存穿透、雪崩、击穿

Redis数据库测试实验 实验要求 1.新建一张user表,在表内插入10000条数据。 2.①通过jdbc查询这10000条数据,记录查询时间。 ②通过redis查询这10000条数据,记录查询时间。 3.①再次查询这一万条数据,要求根据年龄进行排序&#…

JavaCV 图像边缘检测 之 Canny 算法

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…

Java Agent使用

文章目录 基本使用premain使用场景 agentmain 关于tools.jar https://docs.oracle.com/en/java/javase/20/docs/specs/jvmti.html com.sun的API,如果使用其他厂商的JVM,可能没有这个API了,比如Eclipse的J9 https://www.ibm.com/docs/en/sdk…

解决客服打字慢的快捷回复软件

客服每天都要打字回复咨询,打字慢必然影响回复效率,聊天宝就是一款解决客服打字慢的快捷回复软件 前言 总所周知,客服每天都要打字回复咨询,打字慢必然影响回复效率,所以解决打字速度慢的问题,就是很多客服…

【2024最新版Kotlin教程】Kotlin第一行代码系列第六课-嵌套类,数据类,密封类

【2024最新版Kotlin教程】Kotlin第一行代码系列第六课-嵌套类,数据类,密封类 数据类在之前的课程已经讲了,嵌套类和密封类可以不学,很少用到的。 但为了系统的完整性还是说一下 一、嵌套类: 选学:按我经…

uniapp 开发公众号 h5 页面 错误 “redirect_uri 参数错误“

公众号 h5 支付 调错避坑 1. 一直显示以下错误 ”redirect_uri 失效了“不用管直接 打包上传服务器 2. 直接在”微信开发者工具“ 进行调试( 使用线上地址访问 )就能看到真实 接口 错误,在进行调试

闪存学习_2:Flash-Aware Computing from Jihong Kim

闪存学习_2:Flash-Aware Computing from Jihong Kim【1】 一、三个闪存可靠性问题二、内存的分类三、NAND 闪存和 NOR 闪存四、HDD和SSD比较Reference 一、三个闪存可靠性问题 耐性(即寿命):最多能经受编程和擦除的次数。数据保留…

代码随想录算法训练营Day55 | 图论理论基础、深度优先搜索理论基础、卡玛网 98.所有可达路径、797. 所有可能的路径、广度优先搜索理论基础

目录 图论理论基础 深度优先搜索理论基础 卡玛网 98.所有可达路径 广度优先搜索理论基础 图论理论基础 图论理论基础 | 代码随想录 图的基本概念 图的种类 大体分为有向图和无向图。 图中的边有方向的是有向图: 图中的边没有方向的是无向图: 图…

OpenEuler 使用ffmpeg x11grab捕获屏幕流,rtsp推流,并用vlc播放

环境准备 安装x11grab(用于捕获屏幕流)和libx264(用于编码) # 基础开发环境&x11grab sudo dnf install -y \autoconf \automake \bzip2 \bzip2-devel \cmake \freetype-devel \gcc \gcc-c \git \libtool \make \mercurial \pkgconfig \zlib-devel \libX11-devel \libXext…

【Simulink仿真】混合储能平抑光伏功率波动

摘要 本文基于Simulink仿真平台,提出了一种混合储能系统(Hybrid Energy Storage System, HESS)来平抑光伏发电中的功率波动。该系统将超级电容与电池相结合,通过双向DC-DC变换器实现能量的动态分配。超级电容响应快,主…