Qt扫盲-QTableWidget理论总结

news2024/11/25 22:49:55

QTableWidget理论总结

    • 1. 概述
    • 2. QTableWidgetItem 概述
    • 3. 表头设置
    • 4. 常用功能
    • 5. 常用信号
    • 6. 槽函数
    • 7. 外观

1. 概述

QTableWidget 是 Qt 提供的一个简单方便、标准的表格显示类。QTableWidget 中的 单元格数据 由 QTableWidgetItem 显示如果 想要一个使用你自己定义modle 的表,你应该使用 QTableView 。
在这里插入图片描述

QTableWidget 可以使用所需的行数和列数来构造一个对象:

tableWidget = new QTableWidget(12, 3, this);

或者,可以在没有给定大小的情况下构造表,并在以后调整大小:

tableWidget = new QTableWidget(this);
tableWidget->setRowCount(10);
tableWidget->setColumnCount(5);

但是记得一定要设置好列数或者函数。没设置行列大小的时候,去 setItem() 的时候会出问题的,设置不成功的。

QTableWidgetItem 在表外部创建(没有父小部件),并使用 setItem() 插入到表中:


QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
          (row+1)*(column+1)));
      tableWidget->setItem(row, column, newItem);

如果要在QTableWidget中启用排序功能,请在用QTableWidgetItem 填充表格后再启用排序功能,否则排序可能会干扰顺序。

表格的结构如下
在这里插入图片描述

2. QTableWidgetItem 概述

Qt 提供的像列表、表格之类的标准 Item 类的功能基本都一致的。每一个单元格内容其实就是 一个 Item。每个Item可以包含多条信息,并将适当地显示它们。

其实知道 QTableWidgetItem 能 显示并编辑文本、还能check 就够用了。

QTableWidgetItem 通常用于显示 文本 text() 和 图标 icon () 。这些是使用 setText() 和 setIcon() 函数设置的。文本的外观可以使用 setFont() 、setForeground() 和 setBackground() 进行自定义。列表项中的文本可以使用 setTextAlignment() 函数对齐。工具提示、状态提示和“这是什么?”帮助可以添加到使用 setToolTip() 、setStatusTip() 和 setWhatsThis() 的列表项中。
默认情况下,Item是 enabled, selectable, checkable的,并且配置 成可拖放、可编辑、可点击 check 的。这都是属于Item 的标志。

每个Item的标志可以通过使用适当的值调用setFlags() 来更改(参见Qt::ItemFlags)。可以使用 setCheckState() 函数检查、取消选中和部分检查可检查的Item。相应的 checkState() 函数指示Item的当前检查状态。
常用的标志像下面

标志名含义
Qt::NoItemFlags完全禁用
Qt::ItemIsSelectableitem可被选中
Qt::ItemIsEditableitem可被编辑
Qt::ItemIsDragEnableditem可被 拖住
Qt::ItemIsDropEnableditem可被 放置
Qt::ItemIsUserCheckableitem可用 check 的类似 QCheckBox
Qt::ItemIsEnableditem可用不

isHidden() 函数可用于确定Item是否隐藏。要隐藏Item,请使用 setHidden() 。

3. 表头设置

在这里插入图片描述

表头的话就像上图一样

QTableWidget 可以同时提供水平和垂直标题。创建标头的最简单方法是向 setHorizontalHeaderLabels() 和 setVerticalHeaderLabels() 函数提供字符串列表。这些将为表的列和行提供简单的文本标题。

也可以从通常在表外部构造的现有表项创建更复杂的标头。
例如,我们可以构造一个带有图标和对齐文本的表格项,并将其用作特定列的标题:

QTableWidgetItem *cubesHeaderItem = new QTableWidgetItem(tr("Cubes"));
cubesHeaderItem->setIcon(QIcon(QPixmap(":/Images/cubed.png")));
cubesHeaderItem->setTextAlignment(Qt::AlignVCenter);

一般获取 表头的话 通过 QTableView 的函数

QHeaderView * horizontalHeader() const :获取水平表头

QHeaderView * verticalHeader() const :获取垂直表头

在 控制外观这些 比如这个表格内容填充整个窗口呀,列宽,列高都是通过设置 QHeaderView 的某些属性来完成的。

4. 常用功能

表中的行数可以用 rowCount() 找到,列数可以用columnCount() 找到。可以使用 clear() 函数清除该表。

  1. 可以通过 row () 和 column() 获取到某一个 QTableWidgetItem 的位置、也可以通过 item() 来定位到具体的Item
  2. currentColumn() 、currentItem() 、currentRow() 获取当前选择的 单个 Item 的位置
  3. findItems() 查找满足条件的 QTableWidgetItem

5. 常用信号

很多信号其实你看一眼就大致知道是干嘛的了。

信号名含义
cellActivated(int row, int column)就是具体哪一个单元格被激活,激活可能是单击、双击、
cellChanged(int row, int column)就是具体哪一个单元格内容改变了,可能是文字、图标内容改变了
cellClicked(int row, int column)就是具体哪一个单元格被单击了
cellDoubleClicked(int row, int column)就是具体哪一个单元格被双击了
cellEntered(int row, int column)
cellPressed(int row, int column)就是具体哪一个单元格被按下了
currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn)发生了新的单元格被选择了
currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous)发生了新的单元格被选择了
itemActivated(QTableWidgetItem *item)就是具体哪一个item 被激活,和 cellActivated 一样
itemChanged(QTableWidgetItem *item)和 cellChanged一样
itemClicked(QTableWidgetItem *item)和 cellClicked一样
itemDoubleClicked(QTableWidgetItem *item)和 cellDoubleClicked一样
itemEntered(QTableWidgetItem *item)和 cellEntered 一样
itemPressed(QTableWidgetItem *item)和 cellPressed一样
itemSelectionChanged()其实就是发生了新的选择,可能是某一个区域被选择了

6. 槽函数

信号名含义
clear()移除所有单元格包括表头
clearContents()只移除所有单元格、不移除表头
insertColumn(int column)插入一个指定位置的空白列
insertRow(int row)插入一个指定位置的空白行
removeColumn(int column)移除某一列 及其 在该列的单元格
removeRow(int row)移除某一行 及其 在该列的单元格
scrollToItem()把表格滚动到某一个单元格处。

7. 外观

在外观的方面主要有两个控制源 一、QTableView ; 二、QHeaderView

  • QTableView
    在 QTableView 的设置就 5个
外观属性名含义
cornerButtonEnabled最左上脚按钮是否可用
gridStyle网格的样式
showGrid是否展示网格
sortingEnabled是否可排序
wordWrap就是单元格内容太长、换不换行
  • QHeaderView
    其实就是控制 标签的长宽,因为每个单元格都是由 horizontalHeader、verticalHeader 的长宽来限制出大小嘛。
    这个
外观属性名含义
defaultAlignment就是 表头的 文字对齐方式
defaultSectionSize单元格的默认长
firstSectionMovable第一个 表头可以移动不
highlightSections是否高亮 显示 被选中的表头
maximumSectionSize单元格的默认长
minimumSectionSize单元格的默认长
showSortIndicator是否展示 排序的箭头
stretchLastSection就是把最后一个表头占满整个表格控件

还有就是 setSectionResizeMode() 就设置单元格是否自动把表格占满,很多模式可以选择的,我一般用的 QHeaderView::Stretch :QHeaderView将自动调整该部分的大小以填充可用空间。用户无法更改大小,也无法以编程方式更改大小。就交给 QHeaderView 来调整大小。

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

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

相关文章

MR案例(3):计算学生成绩(总分和平均分)

文章目录一、 任务目标1. 准备数据二、实行任务1. 创建Maven项目2. 添加相关依赖3. 创建日志属性文件4. 创建成绩映射器类5. 创建成绩驱动器类6. 启动成绩驱动器类,查看结果7. 创建成绩归并器类8. 修改成绩驱动器类9. 启动成绩驱动器列,查看结果一、 任务…

艾美捷利妥昔单抗Rituximab参数及应用

艾美捷利妥昔单抗Rituximab背景: 利妥昔单抗是一种针对CD20抗原的基因工程嵌合鼠/人单克隆IgG1κ抗体。利妥昔单抗的分子量约为145 kD。利妥昔单抗由哺乳动物细胞(中国仓鼠卵巢)产生。 艾美捷利妥昔单抗Rituximab基本参数: 中文…

Java+SSM流浪猫狗救助领养网站(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用技术: 后端采用SSM框架 前端采用了htmlcssbootstrap框架 MySQL数据库Tomcat服务器,项目含有源码、文档、配套开发软件、软件安装教程、项目发布教程等 项目功能介绍: 项目分为前端和后端两,包含的功能主要…

DBCO-PEG-TPP,二苯并环辛炔-聚乙二醇-磷酸三苯酯,DBCO-PEG磷酸三苯酯

【产品描述】 西安凯新生物科技有限公司供应的:​DBCO-PEG-TPP亲水性聚乙二醇 (PEG) 间隔臂提供了一个长而灵活的连接,磷酸三苯酯为无味、无臭的白色结晶块状或粉末,它不溶于冷水,但可溶于50℃以上的热水中,当溶液温度降低至室温时呈现疏水性…

安装 DbVisualizer pro 10.0.16

DbVisualizer pro 10.0.16 双击安装, 选择下载 JRE运行后 选择 创建 桌面快捷方式 安装成功后 ping 报错无法连接到mysql , 驱动 所致 官方下载最新驱动 MySQL :: Download MySQL Connector/J (Archived Versions)https://downloads.mysql.com/archi…

校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程

校园二手书商城源代码基于微信小程序云开发,可在线支付提现,含详细配置教程 完整代码下载地址:校园二手书商城源代码基于微信小程序云开发 欢迎使用,下面是配置教程 长话短说,下面直接说配置流程 一、小程序端 1…

JZ31. 栈的压入、弹出序列

文章目录1. 题目描述2. 解题思路3. 动图演示4. 代码实现1. 题目描述 题目链接:31. 栈的压入、弹出序列 2. 解题思路 元素入栈指的是把新元素放到栈顶元素的上面,使之成为新的栈顶元素; 元素出栈指的是从一个栈删除元素又称作出栈或退栈&am…

MySQL8.0高级篇(上)-架构与索引

文章目录一、MySQL环境安装与介绍1、MySQL安装1.1 安装前说明1.2 MySQL的Linux版安装1.3 MySQL登录1.4 字符集的相关操作1.5 字符集与比较规则(了解)1.6 请求到响应过程中字符集的变化1.7 SQL大小写规范1.8 sql_mode的合理设置2、MySQL的数据目录2.1 MySQL8的主要目录结构2.2 查…

Batch Normalization批量归一化

批量归一化(batch normalization)层,它能让较深的神经网络的训练变得更加容易。 对深层神经网络来说,即使输入数据已做标准化,训练中模型参数的更新依然很容易造成靠近输出层输出的剧烈变化。这种计算数值的不稳定性通…

前端基础_事件介绍

事件介绍 下面介绍一下浏览器在请求媒体数据、下载媒体数据、播放媒体数据一直到播放结束这一系列过程中,到底会触发哪些事件。  loadstart事件:浏览器开始请求媒介。  progress事件:浏览器正在获取媒介。  suspend事件:浏览器…

[附源码]计算机毕业设计Python大学生心理测评系统(程序+源码+LW文档)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

(15)目标检测算法之 YOLOv7应用解析

本文翻译自:https://github.com/WongKinYiu/yolov7 YOLOv7 2022年发布,论文链接:YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors 模型性能如下: 网页端可执行demo:Hu…

分支和循环语句(5)

目录 1、什么是语句? 2、分支语句(选择结构) 1、if 语句 1、if 语句的语法结构 2、悬空else 3、if书写形式的对比 4、练习 3、switch语句 1、语法形式 2、在switch语句中的 break 3、default子句 4、循环语句 1、while循环 1、…

10个Excel实用操作技巧分享,使用率超高,让你一学就会

学习和工作都能用到的Excel操作技巧,非常简单但是很实用,学会之后你会发现这些技巧的使用率超高,整理之后放在下面了,都是增加工作系效率的好帮手。1.冻结窗格 如果表格记录的数据比较多,我们可以使用【冻结窗格】&…

A. Parsa‘s Humongous Tree(树形DP + 贪心)

Problem - 1528A - Codeforces 两个玩家正在玩一个游戏。他们有一个整数1,2,...,n的排列组合(排列组合是一个数组,其中从1到n的每个元素正好出现一次)。这个排列组合没有按升序或降序排序(即排列…

智能遥测终端机——微功耗设计的物联网网关

一、产品概述 智能遥测终端机是一款采用微功耗设计的物联网网关,采用内置电池组供电,支持对模拟量、开关量、RS485传感器采集并通过NB-IoT或4G通讯方式传输数据。智能遥测终端机支持参数远程升级、远程配置、蓝牙配置等,智能遥测终端机集成高…

1572_AURIX_TC275_SCU中的锁步以及芯片温度采集

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这个是锁步控制寄存器,其实是一个控制以及状态综合的寄存器。可以读取到现在的锁步设置状态,也可以进行锁步的使能。 这个寄存器跟上面这一个页一样,只是…

开发1-5年的Java程序员,该学习哪些知识实现涨薪30K?

工作已经8年有余,这8年里特别感谢技术管理人员的器重,以及同事的帮忙,学到了不少东西。这8年里走过一些弯路,也碰到一些难题,也受到过做为一名开发却经常为系统维护和发布当救火队员的苦恼。遂决定梳理一下自己所学的东…

11_逆向工程

MyBatis的一个主要的特点就是需要程序员自己编写SQL,那么如果表太多的话,难免会很麻烦,所以MyBatis官方提供了一个逆向工程,可以针对单表自动生成MyBatis执行所需要的代码(包括mapper.xml,mapper.java&…

数据安全治理笔记

数据安全治理整理概述 数据安全治理不仅局限于组织内部,而是需要一个国家、行业组织、可言机构、企业和个人共同努力完成的课题。因此,应该分别重广义和狭义的角度看待数据安全治理。 广义地说:数据安全治理是在过数据安全战略的知道下&…