本文为学习记录,若有错误,请联系作者,谦虚受教。
文章目录
前言
满地都是六便士,她却抬头看见了月亮。
一、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();//只清除工作区,不清除表头
三、简单例子
//列表
QString Str_Co2=ui->text->text();
int i=ui->tableInfo->rowCount();//列表行数 。columnCount()列表列数
QTableWidgetItem *item = new QTableWidgetItem(Str_Co2);
QTableWidgetItem *PPM=new QTableWidgetItem("PPM");
item->setFont(QFont("Helvetica"));
item->setTextAlignment(Qt::AlignCenter);//居中item->setTextAlignment(Qt::AlignHCenter | Qt::AlignVCenter); //文本对齐格式
PPM->setTextAlignment(Qt::AlignCenter);
this->ui->tableInfo->setItem(i-10,0,item);//行、列,数据static_cast<int>(i)
this->ui->tableInfo->setItem(i-10,4,PPM);
ui->tableInfo->setRowCount(i+1);//增加行数
执行效果如图所示:
当在特定的列表位置写入数据时,需要定位列表位置,列表位置如同二维坐标位置。
例如:this->ui->tableInfo->setItem(0,0,item)在0行0列上填充item数据。
总结
善于总结,多进一步。