【Qt】多元素控件QTableWidget

 多元素控件QTableWidget

使用QTableWidget表示一个表格控件,一个表格中包含若干行、每一个行又包含若干列。

表格中的每一个单元格,都是一个QTableWidget对象。

  • QTableWidget核心方法
方法说明

item(int row, int column)

根据⾏数列数获取指定的 QTableWidgetItem*

setItem(int row, int column, QTableWidget*)

根据⾏数列数设置表格中的元素

currentItem()

返回被选中的元素 QTableWidgetItem*

currentRow()

返回被选中元素是第⼏⾏

currentColumn()

返回被选中元素是第⼏列

row(QTableWidgetItem* )

获取指定 item 是第⼏⾏

column(QTableWidgetItem* )

获取指定 item 是第⼏列

rowCount()

获取⾏数

columnCount()

获取列数

insertRow(int row)

在第 row ⾏处插⼊新⾏

insertColumn(int column)

在第 column 列插⼊新列

removeRow(int row)

删除第 row ⾏

removeColumn(int column)

删除第 column 列

setHorizontalHeaderItem(int column, QTableWidget*)

设置指定列的表头

setVerticalHeaderItem(int row, QTableWidget*)

设置指定⾏的表头

  • QTableWidgetItem核心信号
信号说明

cellClicked(int row, int column)

点击单元格时触发

cellDoubleClicked(int row, int column)

双击单元格时触发

cellEntered(int row, int column)

⿏标进⼊单元格时触发

currentCellChanged(int row, int column, int previousRow, int previousColumn)

选中不同单元格时触发

  • QTableWidgetItem核心方法
方法说明

row()

获取当前是第⼏⾏

column()

获取当前是第⼏列

setText(const QString&)

设置⽂本

setTextAlignment(int)

设置⽂本对⻬

setIcon(const QIcon&)

设置图标

setSelected(bool)

设置被选中

setSizeHints(const QSize&)

设置尺⼨

setFont(const QFont&)

设置字体

例子:使用QTableWidget新增行与列

(1)设置一个TableWidget、四个按钮、一个lineEdit

(2)当输⼊框内容为空的时候, 显⽰提⽰信息

也可以在属性栏里面设置

(3)构造表格的三行三列

(4)给三行三列创建行名与列名

(5)设置表格中初始化数据

(6)编写四个按钮的slot函数

代码实现

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 当输⼊框内容为空的时候, 显⽰提⽰信息ui->lineEdit->setPlaceholderText("输入新增的行名/列名");// 创建 3 行ui->tableWidget->insertRow(0);ui->tableWidget->insertRow(1);ui->tableWidget->insertRow(2);// 创建 3 列ui->tableWidget->insertColumn(0);ui->tableWidget->insertColumn(1);ui->tableWidget->insertColumn(2);// 创建 3 行的行名ui->tableWidget->setVerticalHeaderItem(0, new QTableWidgetItem("学生1"));ui->tableWidget->setVerticalHeaderItem(1, new QTableWidgetItem("学生2"));ui->tableWidget->setVerticalHeaderItem(2, new QTableWidgetItem("学生3"));// 创建 3 列的列名ui->tableWidget->setHorizontalHeaderItem(0, new QTableWidgetItem("姓名"));ui->tableWidget->setHorizontalHeaderItem(1, new QTableWidgetItem("年龄"));ui->tableWidget->setHorizontalHeaderItem(2, new QTableWidgetItem("性别"));// 初始化表格ui->tableWidget->setItem(0, 0, new QTableWidgetItem("张三"));ui->tableWidget->setItem(0, 1, new QTableWidgetItem("19"));ui->tableWidget->setItem(0, 2, new QTableWidgetItem("男"));ui->tableWidget->setItem(1, 0, new QTableWidgetItem("李四"));ui->tableWidget->setItem(1, 1, new QTableWidgetItem("20"));ui->tableWidget->setItem(1, 2, new QTableWidgetItem("女"));ui->tableWidget->setItem(2, 0, new QTableWidgetItem("王五"));ui->tableWidget->setItem(2, 1, new QTableWidgetItem("20"));ui->tableWidget->setItem(2, 2, new QTableWidgetItem("男"));}Widget::~Widget()
{delete ui;
}void Widget::on_pushButton_insertRow_clicked()
{// 获取行数int rowCount = ui->tableWidget->rowCount();// 插入新行ui->tableWidget->insertRow(rowCount);// 获取输入框里的内容const QString& text = ui->lineEdit->text();// 将内容创建为行名ui->tableWidget->setVerticalHeaderItem(rowCount, new QTableWidgetItem(text));
}void Widget::on_pushButton_removeRow_clicked()
{// 获取选中的行数int currentROw = ui->tableWidget->currentRow();// 删除选中的行ui->tableWidget->removeRow(currentROw);
}void Widget::on_pushButton_insertColumn_clicked()
{// 获取列数int columnCount = ui->tableWidget->columnCount();// 插入新列ui->tableWidget->insertColumn(columnCount);// 获取输入框里的内容const QString& text = ui->lineEdit->text();// 将内容创建为列名ui->tableWidget->setHorizontalHeaderItem(columnCount, new QTableWidgetItem(text));
}void Widget::on_pushButton_removeColumn_clicked()
{// 获取选中的列数int currentColum = ui->tableWidget->currentColumn();// 删除选中的列ui->tableWidget->removeColumn(currentColum);
}

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

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

相关文章

WIN32实现远程桌面监控

文章目录 完整代码API简介调试代码 后记reference 完整代码 server.cpp #include <winsock2.h> #include <Ws2tcpip.h> #include <windows.h> #include <stdio.h> #include <vector> #pragma comment(lib, "ws2_32.lib")LRESULT CAL…

免费JSON在线解析工具网址

1&#xff0c;https://tool.juhe.cn/ JSON在线解析 (juhe.cn) 2&#xff0c;https://www.sojson.com/ JSON在线 | JSON解析格式化—SO JSON在线工具

Android Studio:模拟器页面闪烁,手机模拟器输入画面闪烁 android studio闪屏

主要解决&#xff0c;android studio 启动app测试&#xff0c;输入数据时&#xff0c;手机画面就会闪烁&#xff0c;闪屏 1. 如图所示&#xff0c;依照顺序找到Edit &#xff0c;并点击Edit 2. 找到Graphics 选择为SoftWare &#xff0c;并保存修改即可 3. 如果此处不能选择S…

MongoDB Compass初体验

入坑Mongodb也好多年了&#xff0c;客户端一直都是使用的Robomongo&#xff0c;后改名为Robo 3T了&#xff0c;现在又改名为Studio 3T&#xff0c;还分了免费版和付费版。 最近换了新电脑&#xff0c;需要重新安装Mongodb的客户端&#xff0c;加上公司对安装软件的各种限制&…

【C语言报错已解决】 `Buffer Overflow`

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 引言一、问题描述&#x1f469;‍&#x1f52c;报错示例&#x1f4da;报错分析&#x1f4da;解决思路 二、解决方法&a…

加速自动驾驶模型迭代,数据存算一体是关键

自动驾驶的每一个业务阶段都会涉及到 AI 深度学习算法和算力的参与&#xff0c;机器视觉&#xff0c;深度学习&#xff0c;传感器技术等均在自动驾驶领域发挥着重要的作用。自动驾驶系统不断迭代的前提是算法的持续优化&#xff0c;目前&#xff0c;自动驾驶发展的瓶颈主要在于…

Vue3.0项目实战(二)——大事件管理系统登录注册功能实现

目录 1. 登录注册页面 [element-plus 表单 & 表单校验] 1.1 注册登录 静态结构 & 基本切换 2. 注册功能 2.1 实现注册校验 2.2 注册前的预校验 2.3 封装 api 实现注册功能 3. 登录功能 3.1 实现登录校验 3.2 登录前的预校验 & 登录成功 1. 登录注册页面 […

交换排序(冒泡排序和快速排序)

一、基本思想 所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置。 交换排序的特点是&#xff1a;将键值较大的记录向序列的尾部移动&#xff0c;键值较小的记录向序列的前部移动。 二、冒泡排序 1.核心思想 两两相邻的元素进行比…

大二必做项目贪吃蛇超详解之上篇win32库介绍

文章目录 1. 游戏背景2. 游戏效果演示3. 项目目标4. 前置知识5. Win32 API5. 1 控制台程序(Console)5. 2 控制台屏幕上的坐标 COORD5. 3 GetStdHandle5. 4 GetConsoleCursorlnfo5. 4. 1 CONSOLE_CURSOR_INFO5. 4. 2 SetConsoleCursorlnfo 5. 5 SetconsoleCursorPosition5. 6 Ge…

Linux(面试篇)

目录 什么是Linux 什么是Linux内核&#xff1f; Linux的基本组件是什么&#xff1f; Bash和Dos之间基本区别是什么&#xff1f; 什么是Root账户 什么是Bash? 什么时CLI? Linux的目录结构时怎样的&#xff1f; 什么是硬链接和软链接&#xff1f; 什么叫CC攻击&#…

【项目日记】高并发内存池 ---项目介绍及组件定长池的实现

余生还长&#xff0c;你别慌&#xff0c;也别回头&#xff0c;别念旧. --- 余华 --- 1 高并发内存池简介 高并发内存池项目是实现一个高并发的内存池&#xff0c;他的原型是google的一个开源项目tcmalloc&#xff0c;tcmalloc全称Thread-Caching Malloc&#xff0c;即线程缓存…

RocketMQ Dashboard

rocketmq-dashboard是一个可视化查看和管理RocketMQ消息队列的工具 官方地址&#xff1a;RocketMQ Dashboard | RocketMQ 1、点击下载源码 2、下载并解压&#xff0c;切换至源码目录rocketmq-dashboard-1.0.0 3、修改配置文件 4、编译 rocketmq-dashboard打成jar包 &#xf…

MySQL中的回表查询、索引覆盖、索引下推

本文重点介绍索引中的常见概念&#xff1a;回表查询、索引覆盖、索引下推 一、回表查询 我们首先理解&#xff1a;在InnoDB存储引擎中&#xff0c;根据索引的存储形式&#xff0c;又可以分为以下两种&#xff1a; 分类含义特点聚集索引 (Clustered Index)将数据存储与索引放到…

leetcode 438.找到字符串中所有字母异位词

目录 题目描述 示例1&#xff1a; 示例2&#xff1a; 提示&#xff1a; 解题思路 Collections库 介绍 滑动窗口法 概念 应用场景及特点&#xff1a; 思路 流程展示 代码 复杂度分析 题目描述 给定两个字符串s和p&#xff0c;找到s中所有p的异位词的子串&#xf…

cdga|让数据治理真正内嵌于企业本身,释放企业数字化建设的最大价值

在当今这个数据驱动的时代&#xff0c;企业数据已成为最宝贵的资产之一&#xff0c;它不仅记录着企业的运营轨迹&#xff0c;更是指导决策、优化流程、创新产品与服务的关键力量。然而&#xff0c;要充分发挥数据的潜力&#xff0c;实现数字化转型的深度与广度&#xff0c;就必…

SAP 有趣的‘bug‘ 选择屏幕输入框没了

如下代码将会输出一个P_U的字段 PARAMETERS p_u TYPE string VISIBLE LENGTH 12 MEMORY ID m1.AT SELECTION-SCREEN OUTPUT.LOOP AT SCREEN.IF screen-name P_U.screen-invisible 1.MODIFY SCREEN.ENDIF.ENDLOOP. 如果我们给这个字段设置一个默认值&#xff0c;参考如下代码…

医疗器械法规标准相关资料

文章目录 前言如何查找法规文件与标准1. 法规清单2. 医疗器械法规文件汇编常用链接常见网站微信公众号前言 在前文 医疗器械软件相关法律法规与标准 中介绍了在软件设计过程常见的法规与标准,并给出部分标准如何查找和下载的方法,但是上文中列举的部分不全面,真实在产品设计…

集合及数据结构第十节(上)————优先级队列,堆的创建、插入、删除与用堆模拟实现优先级队列

系列文章目录 集合及数据结构第十节&#xff08;上&#xff09;————优先级队列&#xff0c;堆的创建、插入、删除与用堆模拟实现优先级队列 优先级队列&#xff0c;堆的创建、插入、删除与用堆模拟实现优先级队列 优先级队列的概念堆的概念堆的存储方式堆的创建变量的作…

审计发现 FBI 的数据存储管理存在重大漏洞

据The Hacker News消息&#xff0c;美国司法部监察长办公室 &#xff08;OIG&#xff09; 的一项审计发现&#xff0c; FBI 在库存管理和处置涉及机密数据的电子存储媒体方面存在“重大漏洞”。 OIG 的审计显示&#xff0c;FBI 对包含敏感但未分类 &#xff08;SBU&#xff09…

Nvidia驱动莫名其妙不好使了?nvidia-smi报错?如何解决?已解决!!

文章目录 一、报错提示二、解决方案2.1 原因1的解决办法2.2 原因2的解决方案 一、报错提示 Ubuntu20.04出现Failed to initialize NVML: Driver/library version mismatch问题NVIDIA-SMI has failed because it couldn‘t communicate with the NVIDIA driver. 二、解决方案 …