QT--QTableWidget

本文为学习记录,若有错误,请联系作者,谦虚受教。


前言

满地都是六便士,她却抬头看见了月亮。


一、QTableWidget是什么?

QTableWidget 是 Qt 中的表格组件类。在窗体上放置一个 QTableWidget 组件后,可以在 Property Editor 里对其进行属性设置,双击这个组件,可以打开一个编辑器,对其 Colum、Row 和 Item 进行编辑。
(简单来说,就是直接在UI界面上对TableWidget进行操作,无需通过代码即可设置行头列同等)

QTableWidget 表格中,每一个单元格是一个 QTable Widgetltem 对象,可以设置文字内容、字体、前景色、背景色、图标,也可以设置编辑和显示标记。每个单元格还可以存储一个 QVariant 数据,用于设置用户自定义数据。

新建一个QTable Widgetltem对象,就可以对每一个单元格内容/颜色/字体等进行操作。
例如:
*QTableWidgetItem item = new QTableWidgetItem(Str_Co2);
对新建的 Item对象进行操作,添加Str_Co2字符串。
this->ui->tableInfo->setItem(i-10,0,item);

QTableWidgetItem 有一些函数对单元格进行属性设置,如下:
setTextAlignment (int alignment):设置文字对齐方式。
(item->setTextAlignment(Qt::AlignCenter);)
setBackground(const QBrush &brush):设置单元格背景颜色。
setForeground(const QBrush &brush):设置单元格前景色。
setIcon(const QIcon &icon):为单元格设置一个显不图标。
setFont(const QFont &font):为单元格显示文字设置字体。
setCheckState(Qt::CheckState state):设置单元格勾选状态,单元格里出现一个QCheckBox组件。
setFlags(Qt::ItemFlags flags):设置单元格的一些属性标记。

二、基本操作

设置表头:
QTableWidgetItem *headerItem;
headerItem=new QTableWidgetItem(headerText.at(i));
//新建一个QTableWidgetItem, headerText.at(i)获取headerText的i行字符串
QFont font=headerItem->font();//获取原有字体设置
font.setBold(true);//设置为粗体
font.setPointSize(12);//字体大小
headerItem->setTextColor(Qt::red);//字体颜色
headerItem->setFont(font);//设置字体
ui->tableInfo->setHorizontalHeaderItem(i,headerItem); //设置表头单元格的Item
初始化数据:
int Rows=ui->tableInfo->rowCount(); //数据区行数,
for (int i=0;i<Rows;i++) //数据区第1行的编号为0,所以范围是0~rowCount()-1
{
strName=QString::asprintf(“学生%d”,i); //学生姓名
this->ui->tableInfo->setItem(i-10,0,item);//行、列、数据对象
if ((i % 2)==0) //分奇数,偶数行设置性别,及其图标
strSex=“男”;
else
strSex=“女”;
}
清除列表:
ui->tableInfo->clearContents();//只清除工作区,不清除表头

三、简单例子

第一种方法:
从1行开始加行

int i1=ui->tableInfo_N2O->rowCount();
QTableWidgetItem *item = new QTableWidgetItem(Str_N2o);
QTableWidgetItem *PPM=new QTableWidgetItem("PPM");
item->setFont(QFont("Helvetica"));
item->setTextAlignment(Qt::AlignCenter);//居中
PPM->setTextAlignment(Qt::AlignCenter);
this->ui->tableInfo_N2O->setItem(i1-1,0,item);//行、列,数据static_cast<int>(i)
this->ui->tableInfo_N2O->setItem(i1-1,1,PPM);
ui->tableInfo_N2O->setRowCount(i1+1);//增加行数
ui->tableInfo_N2O->scrollToBottom();  //让滚动条滚动到最底部

如图所示:
在这里插入图片描述

第二种方法:
从0到1加行

QTableWidgetItem *item = new QTableWidgetItem(Str_N2o);
QTableWidgetItem *PPM=new QTableWidgetItem("PPM");
ui->tableInfo_N2O->insertRow(ui->tableInfo_N2O->rowCount());
int rowIdx = ui->tableInfo_N2O->rowCount()-1;
this->ui->tableInfo_N2O->setItem(rowIdx,2,item);
this->ui->tableInfo_N2O->setItem(rowIdx,3,PPM);
ui->tableInfo_N2O->scrollToTop();  //让滚动条滚动到最底部
               

对于在列表中要填充数据的话,先弄明白列表的位置
ui.setItem(行,列,item)

当在特定的列表位置写入数据时,需要定位列表位置,列表位置如同二维坐标位置。
例如:this->ui->tableInfo->setItem(0,0,item)在0行0列上填充item数据。

总结

善于总结,多进一步。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值