Qt QTableWidget表格控件的用法(非常详细)_qt中的,qtablewidget控件显示月份

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Golang全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Go语言开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注go)
img

正文

第一个构造函数可以在指定的 parent 父窗口中创建一个空的表格,表格中不显示任何单元格(如图 2a) 所示)。第二个构造函数可以在指定的 parent 父窗口中创建一个表格,表格中整齐地排列着 rows 行 columus 列的单元格,每个单元格都是空的(如图 2b) 所示)。

img
图 2 创建 QTableWidget 表格

实用 QTableWidget 表格之前,必须指定表格的行和列。我们可以直接调用第 2 个构造函数,这样既创建了表格又指定了行和列。当然,也可以调用第 1 个构造函数先创建表格,然后借助 QTableWidget 类提供的成员方法指定行和列,两种方式都可以。

与数组下标类似,QTableWidget 表格单元格的行标和列标都是从 0 开始。例如在图 2b) 中,选中的单元格的坐标是 (0, 0)。

QTableWidgetItem单元格

QTableWidget 表格中,每个单元格都是 QTableWidgetItem 类的实例对象。

定义 QTableWidgetItem 类的实例对象之前,程序中要引入<QTableWidgetItem>头文件。QTableWidgetItem 类提供了 4 个构造函数:

QTableWidgetItem(int type = Type)
QTableWidgetItem(const QString &text, int type = Type)
QTableWidgetItem(const QIcon &icon, const QString &text, int type = Type)
QTableWidgetItem(const QTableWidgetItem &other) //复制(拷贝)构造函数

text 参数用于指定单元格要显示的文本(字符串),icon 参数用于指定单元格要显示的图标,type 参数配有默认值,很少用到。

QTableWidgetItem 单元格通常用来存放 text 文本和 icon 图标,借助该类提供的 setBackground()、setTextAlignment() 等成员方法,我们可以轻松设置每个单元格的字体、颜色、背景等。

QTableWidgetItem 类还对<小于运算符进行了重载,根据各个单元格存储的文本内容(字符串),多个单元格之间可以直接比较大小。借助这一特性,我们可以很轻易地实现“单元格排序”功能。

默认情况下,用户可以选中 QTableWidget 表格中的某个单元格,还可以对目标单元格中的文本内容进行修改。通过设置 QTableWidget 表格,可以禁止用户编辑所有单元格。

QTableWidgetItem 类提供了很多实用的成员方法,其中比较常用的方法如下表所示:

表 1 QTableWidgetItem成员方法 成员方法 功 能

setText(const QString &text)设置单元格中的文本。
setIcon(const QIcon &icon)给单元格添加图标。
setBackground(const QBrush &brush)设置单元格的背景。
setFont(const QFont &font)设置单元格中文本的字体。
setForeground(const QBrush &brush)设置单元格中字体的颜色。
setTextAlignment(int alignment)设置单元格中文本的对齐方式。
setToolTip(const QString &toolTip)给单元格设置提示信息。

QTableWidget表格的使用

对于创建好的 QTableWidget 表格,我们可以借助该类提供的成员方法快速地操作它。

QTableWidget 类提供了很多实用的成员方法,它还从父类继承了很多方法,下表给大家罗列了实际场景中操作 QTableWidget 表格用得最多的几个方法,这些方法是初学者必须要掌握的:

QTableWidget类常用成员方法 成员方法 功 能

setRowCount(int rows)设置表格的行数。
setColumnCount(int columns)设置表格的列数。
setRowHeight(int row, int height)设置指定行的行高。
setColumnWidth(int column, int width)设置指定列的宽度。
setCellWidget(int row, int column, QWidget *widget)向表格中的指定位置添加 widget 控件。 通过调用 cellWidget(int row, int column) 方法,可以获取指定位置出的控件。
setHorizontalHeaderLabels(const QStringList &labels)设置表格的水平表头。
setVerticalHeaderLabels(const QStringList &labels)设置表格的竖直表头。
setItem(int row, int column, QTableWidgetItem *item)向表格指定位置添加单元格。 获取指定位置的单元格,可以借助 item(int row, int column) 或者 itemAt(int ax, int ay) 方法。
setEditTriggers(EditTriggers triggers)当 triggers 参数值为 QAbstractItemView::NoEditTriggers 时,表示禁止用户编辑单元格。
resize(int w, int h)设置表格的尺寸。
setFont(const QFont &)设置表格数据区中文本的字体和大小。

QTableWidget信号和槽

QTableWidget 类提供的信号函数,可以监听用户对表格中的哪个单元格进行了何种操作,常见的操作包括点击、双击、按下、编辑等。

下表展示了 QTableWidget 类提供的一些信号函数以及它们各自的功能:

表 3 QTableWidget信号函数 信号函数 功 能

cellClicked(int row,int column)当某个单元格被点击时,触发该信号,row 和 columu 就是被点击的单元格的位置。
cellDoubleClicked(int row,int column)当某个单元格被双击时,触发该信号,row 和 columu 就是被点击的单元格的位置。
cellEntered(int row,int column)当某个单元格被按下时,触发该信号,row 和 columu 就是被点击的单元格的位置。
cellChanged(int row, int column)当某个单元格中的数据发生改变时,触发该信号,row 和 columu 就是被改变的单元格的位置。
itemClicked(QTableWidgetItem *item)当某个单元格被点击时,触发该信号,item 就是被点击的单元格。
itemDoubleClicked(QTableWidgetItem *item)当某个单元格被双击时,触发该信号,item 就是被双击的单元格。
itemEntered(QTableWidgetItem *item)当某个单元格被按下时,触发该信号,item 就是被按下的单元格。
itemChanged(QTableWidgetItem *item)当某个单元格中的数据发生改变时,触发该信号,item 就是被改变的单元格。

QTableWiget 表格也可以接收信号并做出相应地响应,例如:

表 4 QTableWidget 槽函数 槽函数 功 能

clear()删除表格中所有单元格的内容,包括表头。
clearContents()不删除表头,仅删除表格中数据区内所有单元格的内容,
insertColumn(int column)在表格第 column 列的位置插入一个空列。
insertRow(int row)在表格第 row 行的位置插入一个空行。
removeColumn(int column)删除表格中的第 column 列,该列的所有单元格也会一并删除。
removeRow(int row)删除表格中的第 row 行,该行的所有单元格也会一并删除。
scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible)滑动到指定的单元格。

QTableWidget表格实例

接下来通过一个实例,带大家更深入地了解 QTableWidget 控件的用法。

#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
class QMyLabel:public QLabel{
Q_OBJECT
public slots:
void rsetText(QTableWidgetItem * item);
};
void QMyLabel::rsetText(QTableWidgetItem * item){
this->setText(item->text());
}
int main(int argc, char *argv[])

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-iIVSqg3T-1713156023354)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 11
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值