问题描述:
1.相机集成测试项目,出现需要每个机型都需要单独的配置文件,且需要可以自由组合,数据包括:机型,位置点,测试项目,启动指令,结束指令。
2.这些数据需要捆绑,自由组合,保存,显示。
由上需求点,那么需要实现以下功能:
1.相关的数据以一定的格式组合
2.能在界面上输入,保存,读取数据,显示数据。
3.每个参数文件需要分机型保存,需要设置站点且独立保存。
4.显示一目了然,excel是很好的一种显示模式。
代码实现:
先制作一个简易的程序,实现excel的布局显示。
.h代码`

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ui_mainwindow.h"
#include <QTableView>
#include <QHeaderView>
#include <QStandardItemModel>
#include <QFileDialog>
#include <QTextStream>namespace Ui {class MainWindow;
}
class MainWindow : public QMainWindow, Ui::MainWindow
{Q_OBJECT
public:explicit MainWindow(QWidget *parent = 0);~MainWindow();private:QStandardItemModel* model;
};
#endif // MAINWINDOW_H
.cpp的代码文件如下:clude "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent)
{setupUi(this);tableView->resize(600, 400);/* 创建数据模型 *model = new QStandardItemModel() ;/* 设置表格视图大小 */tableView->resize(600, 400);/* 设置表格标题行(输入数据为QStringList类型) */model->setHorizontalHeaderLabels({"LoctionID", "Camera Test", "Start Com", "End Com", "Other"});/* 自适应所有列,让它布满空间 */tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);/* 加载共6行数据,并每行有6列数据 */for (int i = 0; i < 6; i++){/* 加载第一列(ID)数据 */model->setItem(i, 0, new QStandardItem(QString("10%1").arg(i)));/* 加载第二列(User Name)数据 */model->setItem(i, 1, new QStandardItem("Camera Test"));/* 加载第三列(City)数据 */model->setItem(i, 2, new QStandardItem("adb XXX"));/* 加载第四列(Classify)数据 */model->setItem(i, 3, new QStandardItem("adb XXX"));/* 加载第五列(Score)数据 */model->setItem(i, 4, new QStandardItem(" "));}/* 设置表格视图数据 */tableView->setModel(model);/* 显示 */tableView->show();
}
MainWindow::~MainWindow()
{}
```cpp如上代码出现的界面:![在这里插入图片描述](https://img-blog.csdnimg.cn/20201124144605115.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjQ4ODAxMQ==,size_16,color_FFFFFF,t_70#pic_center)现在需要做的是读取一个配置文件,然后显示出来。
(在整个工程中,只要处理对应的配置文件即可,可以减少很多繁琐的事情)
qt  tableWidget读取和显示txt内容1. 如下代码实现:.pro文件
```cpp
QT       += core gui
QT += core
QT += widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = excel
TEMPLATE = app
SOURCES += main.cpp\mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui

.cpp文件

#include "mainwindow.h"
#include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent)
{setupUi(this);setExcel();
}MainWindow::~MainWindow()
{}
void MainWindow::setExcel()
{QStringList textList;int rowCount = 0;        //统计文件的行数int cloumCount = 4;     //列数已知QFile file("../build-excel-Desktop_Qt_5_6_2_MSVC2013_32bit-Debug/debug/Template/exceldata.txt");if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){qDebug()<<"Can't open the file!"<<endl;}while(!file.atEnd()){QByteArray line = file.readLine();rowCount++;QString str(line);textList.append(line);qDebug()<< str;}qDebug()<< rowCount;qDebug()<< textList;tableWidget->resize(800, 400);tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);tableWidget->setRowCount(rowCount-1);tableWidget->setColumnCount(cloumCount);for(int i = 0; i < rowCount; i++){QStringList Item1 ;QStringList Text1;Item1= textList.at(i).split(",");Text1<< Item1.at(0) <<Item1.at(1) <<Item1.at(2)<<Item1.at(3);switch(i){case 0:tableWidget->setHorizontalHeaderLabels(Text1);break;case 1:for(int num = 0; num < 4; num++){tableWidget->setItem(0, num, new QTableWidgetItem(Text1.at(num)));}break;case 2:for(int num = 0; num < 4; num++){tableWidget->setItem(1, num, new QTableWidgetItem(Text1.at(num)));}break;case 3:for(int num = 0; num < 4; num++){tableWidget->setItem(2, num, new QTableWidgetItem(Text1.at(num)));}break;case 4:for(int num = 0; num < 4; num++){tableWidget->setItem(3, num, new QTableWidgetItem(Text1.at(num)));}break;case 5:for(int num = 0; num < 4; num++){tableWidget->setItem(4, num, new QTableWidgetItem(Text1.at(num)));}break;case 6:for(int num = 0; num < 4; num++){tableWidget->setItem(5, num, new QTableWidgetItem(Text1.at(num)));}break;case 7:for(int num = 0; num < 4; num++){tableWidget->setItem(6, num, new QTableWidgetItem(Text1.at(num)));}break;case 8:for(int num = 0; num < 4; num++){tableWidget->setItem(7, num, new QTableWidgetItem(Text1.at(num)));}break;case 9:for(int num = 0; num < 4; num++){tableWidget->setItem(8, num, new QTableWidgetItem(Text1.at(num)));}break;default :break;}}
}

.h文件

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "ui_mainwindow.h"#include <QFileInfo>
#include <QTextStream>
#include <QProcess>namespace Ui {class MainWindow;
}
class MainWindow : public QMainWindow, Ui::MainWindow
{Q_OBJECT
public:explicit MainWindow(QWidget *parent = 0);~MainWindow();
public:
void setExcel();
};
#endif // MAINWINDOW_H

在相应的文件位置填写txt文件内容即可实现,如下功能:

工程代码会上传在个人的资源文件里面

QT 读取,保存,显示excel数据相关推荐

  1. qt读取文件里的数据并做折线图 并鼠标触碰显示

    qt读取文件里的数据并做折线图 并鼠标触碰显示 void MainWindow::chartShow1() {strText =ui->dateTimeEdit->text(); //传递 ...

  2. 模板页显示Excel数据Gridview增删改查

    <%@ Page Title="主页" Language="C#" MasterPageFile="~/Site.master" Au ...

  3. Java读取和解析Excel数据:基于Apache POI(二)

    Java读取和解析Excel数据:基于Apache POI(二) 假设附录1文章中的test.xls是对员工的考勤记录表.需要根据这张excel表统计员工的加班时间,那么需要重点关注第五列的下班时候的 ...

  4. python与excel的应用-Python 3 读取和存储Excel数据(应用到接口测试)

    1.利用cmd命令安装第三方库 openpyxl 同时支持读写操作,支持的Excel是以.xlsx结尾的文件. 命令: pip install openpyxl [命令:pip install req ...

  5. python pandas csv读取_如何用 pandas 读取 csv 和 Excel 数据

    本文采用真实的股票数据作为案例,教你如何在Python中读取常用的数据文件. 内容: 读取csv数据 读取Excel数据 合并多张表 数据文件下载地址: 读取csv数据 csv文件用逗号来分隔数值,是 ...

  6. 读取、写入excel数据

    在实际项目中,不可避免的会操作excel表格.一直以来都是读取excel表格,可今天为了写入excel表格,可是煞费苦心,终于完成,记录下来以便后续使用. 1.读取excel表格的数据 读取excel ...

  7. html行标签并列显示,excel数据透视表_excel数据透视表怎样不显示汇总

    EXCEL中的数据透视表有什么作用,用在哪些方面? excel2010数据透视表怎么做 excel2010数据透视表做法,需要用户打开需要编辑的文件,进入后点击数据透视表,选中我们需要统计的数据,默认 ...

  8. Qt 读取并且显示SVG图片

    SVG图片是一种可缩放的矢量图片,是一个开放的图片标准.是由xml格式定义一种文件. svg图片文件具有以下优势: 基于xml语言 可在图像质量不下降的情况下被放大 比JPEG和PNG格式的文件要小很 ...

  9. 记录QT在实时显示摄像头数据时候切换TAB页出现异常

    最近在做一个项目,用一个TAB做页控件,里面放了不同的widget,其中Awidget是实时输出摄像头数据,是通过opencv转qimage,一开始正常,当我快速在A与B之间切换时就出现了如下错误: ...

最新文章

  1. pinpoint的id的生成
  2. 深入理解CSS线性渐变linear-gradient
  3. 脚手架koa2+mockjs
  4. oracle数据库从入门到精通之三
  5. Java黑皮书课后题第2章:2.6(求一个整数各位数的和)读取一个0和1000之间的整数,并将给整数的各位数字相加
  6. [leetcode] 198.打家劫舍
  7. qt设置滚动区域的滚动条的样式
  8. Oracle DBA的SQL编写技能提升宝典(含SQL资源)
  9. [Elasticsearch] es 6.8 编译成功
  10. 【java】java基础之SPI框架实现-整体设计
  11. JavaScript面试大全(二)
  12. 【追一科技】NLG技术:文本生成技术多样化应用的探索之路
  13. 使用struts框架接受http请求过来的get和post数据的方法:
  14. 王招治计算机财务管理,计算机财务管理——以Excel为分析工具
  15. 微信朋友圈 腾讯服务器,朋友圈@微信能得一面红旗?腾讯服务器一度宕机
  16. 苏轼 天涯 青砚1989
  17. 流风ASP.NET框架企业版试用地址公布
  18. Collecting package metadata (current_repodata.json): fail亲测成功
  19. 用c语言编写定时器程序,C语言怎么实现定时器
  20. Android7.0 MTK 需求文档(一)

热门文章

  1. 小程序分账有什么优势
  2. 不缺信心与黄金 新基建赛道下的云计算将一飞冲天
  3. Java bouncycastle API 创建 CSR 和签发证书
  4. JS数据类型(6种基本数据类型)
  5. Cesium 视角锁定、解除锁定
  6. mysql--通过cmd连接mysql,并创建数据库
  7. Android Apk 360加固方法步骤
  8. HIT ACM 1005高速公路快餐店仓库选址(动态规划)
  9. Android属性动画完全解析(上),初识属性动画的基本用法(转)
  10. 安卓手机上跑_两个安卓手机备忘录便签里的内容怎样储存到新手机上?