Qt/C++学习系列之列表使用记录

前言

列表的使用主要基于QTableWidget控件,同步使用QTableWidgetItem进行单元格的设置,最后可以使用QAxObject进行单元格的数据读出将数据进行存储。接下来就开始列表的设置和保存吧!


列表的初始化

界面

列表控件可以在界面上使用QTableWidget控件。

初始化设置

名称获取

cpp 复制代码
// 获取 ui 中的 QTableWidget
QTableWidget *tableWidget = ui->TabWid_Result;
  • 获取界面中的QTableWidget的名称,为了后续初始化的使用。

简单设置

cpp 复制代码
tableWidget->setRowCount(n);
tableWidget->setColumnCount(m);
  • 设置表格的行数和列数
cpp 复制代码
tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
        
  • 设置表格为不可编辑:一般是结果显示中,不需要表格输入,只是结果输出进行设置。
cpp 复制代码
tableWidget->horizontalHeader()->setVisible(false);  
tableWidget->verticalHeader()->setVisible(true);    
  • 显示默认的水平表头
  • 隐藏默认的垂直表头
  • 表头的设置可具体实际的需要进行显示或隐藏。
cpp 复制代码
tableWidget->setColumnWidth(col, 80); 
tableWidget->setRowHeight(row, 50);
  • 设置每列宽度的像素
  • 设置每行高度的像素。
cpp 复制代码
QTableWidgetItem *emptyItem = new QTableWidgetItem("\\");
emptyItem->setBackground(Qt::lightGray); 
tableWidget->setItem(i, j, emptyItem);
  • 单元格填充使用QTableWidgetItem
  • setBackground是来设置单元格的背景色
  • 将单元格内容填充到单元格内

如何合并单元格!

cpp 复制代码
tableWidget->setSpan(0, 0, 1, 12);
  • void setSpan(int row, int column, int rowSpan, int columnSpan);:这里就是初始的行列到扩展的行列。

这里要注意,如果需要存储,那么第三行一定要有数据内容,不然程序会崩!

单元格存储

cpp 复制代码
QAxObject* excel = new QAxObject();
  • 定义表格。
cpp 复制代码
QAxObject* workbooks = excel->querySubObject("Workbooks");
QAxObject* workbook = workbooks->querySubObject("Add()");
  • 添加新的工作薄。
cpp 复制代码
QAxObject* sheets = workbook->querySubObject("Worksheets");
QAxObject* sheet = sheets->querySubObject("Item(int)", 1); // 第一个工作表
  • 获取活动的第一个工作表
cpp 复制代码
int romCount = ui->TabWid_Result->rowCount();
int colCount = ui->TabWid_Result->columnCount();
  • 获取总行数
  • 获取总列数
cpp 复制代码
QAxObject* biaotou=sheet->querySubObject("Cells (int,int)", 1, 1);
biaotou->dynamicCall("SetValue(const QVariant&)", QVariant("xx"));
biaotou->setProperty("RowHeight", 30); // 设置宽度为20
biaotou->setProperty("Size", 20); // 设置宽度为20
  • 这里是获取单元格对象。
  • dynamicCall设置单元格的内容。
  • setProperty是根据不同的内容进行数据设置。

如何获取实际列表值进行excel数据写入呢?

cpp 复制代码
QString str1=ui->TabWid_Result->item(i,j)->text();
QAxObject* danyuange3=sheet->querySubObject("Cells (int,int)", i, j);
danyuange3->dynamicCall("SetValue(const QVariant&)", QVariant(str1));
  • 获取表格内容,形成QString
  • querySubObject:获取 Excel 单元格对象
  • 通过dynamicCall将内容写入QAxObject中。

总结

本文主要简单介绍了表格的简单使用,通过AI搜索进行函数使用搜索,同时利用AI进行存储设置的学习。

相关推荐
用户40993225021217 分钟前
如何用FastAPI玩转多模块测试与异步任务,让代码不再“闹脾气”?
后端·ai编程·trae
陈佬昔没带相机3 小时前
告别Token焦虑!我是如何用最低消费玩转AI编程的
claude·cursor·trae
兵临天下api20 小时前
微店店铺商品搜索(item_search_shop)接口深度分析及 Python 实现
trae
倔强的石头10621 小时前
用 Trae 玩转 Bright Data MCP 集成
智能体·trae·bright data mcp
兵临天下api1 天前
微店 item_get 接口深度深度分析及 Python 实现
trae
飞哥数智坊2 天前
终端里用 Claude Code 太难受?我把它接进 TRAE,真香!
人工智能·claude·trae
程序员X小鹿2 天前
Trae SOLO实战分享:3小时上线一个网站,全栈开发 + 自动部署,吊打Claude Code?(附保姆级教程)
ai编程·trae·solo
围巾哥萧尘2 天前
TRAE技巧便利店第二期,教师智能点名网页系统,荣获第一名啦🧣
trae
豆包MarsCode2 天前
TRAE MCP 实践: 智能人情账本系统开发
trae
兵临天下api2 天前
1688 item_get_app 接口深度分析及 Python 实现
trae