Qt读取txt文件中数据并绘制图像

由于毕业设计需要,接触到Qt学习。基础比较差。遇到一系列问题,都咬牙慢慢啃下来了。

由于需要将光谱仪采集到的原始数据进行背景扣除,就涉及到文本文件读取工作啦。几乎把所有的帖子都看完了,天资愚钝,还是没整出来。

偶然一天发现Qt中QString的mid,left,right剪切操作。得到了相关灵感。Qt介绍用法如下。

Qt读取txt文件中数据并绘制图像_第1张图片



就是可以截取对应字符串。

在我通过光谱仪得到的测试数据中,每行为157.60      618.00 ,第一列为拉曼位移,第二列为散射强度,列间距为12.    

所以,可以通过

double xplot=str.right(firstNum_size).toDouble();

double yplot=str.mid(12,secNum_size).toDouble();

为了解放双手,在后续优化程序过程中,添加了判断数据列数和列间距的小代码。因为有时候会得到多列数据。

贴上自己建的头文件和.cpp文件。


readTxt.h

#ifndef READTXT_H
#define READTXT_H
#include
#include
QList readTxt(QString path, int Ycolumns, int YoutCol, int colSize,
 int outputNum);
#endif // READTXT_H

readTxt.cpp

#include"readTxt.h"
#include 
#include
#include
#include
#include
#include

QList readTxt(QString path, int Ycolumns,int YoutCol,int colSize,int outputNum)//outputNum,设置为1,2选择输出列数据

{
    QFile file(path);

    if(!file.open(QFile::ReadOnly|QFile::Text)){
//        QMessageBox::warning(this,"Error","read file yangpin.txt default:%1".arg(file.errorString()));
        qDebug()<<"Error"< xplot;//创建QList对象来存储对应列数据
  QList yplot;
  int data_len;//检测输出数据个数用的
  int secChar=YoutCol*colSize;
int dis=colSize*(Ycolumns-YoutCol);
in.readLine();
in.readLine();//跳两行排除非数字,因为我所读txt前两行都存在非数字标注
  while(!in.atEnd()){
////    qDebug()<

QList在大多数情况表现比较优秀。大家也可以去看一下QList、QVector等异同点。差不多就是这样了,结合了很多老铁的老帖。统一谢谢他们。完全是想回报一下。至少我没发现适用于光谱数据预处理的相关文章。哈哈。

int MainWindow::txtFormat(QString path,int chooseNum)
{
    QFile file(path);

    if(!file.open(QFile::ReadOnly|QFile::Text)){
//        QMessageBox::warning(this,"Error","read file yangpin.txt default:%1".arg(file.errorString()));
        qDebug()<<"Error"<

判断列数的主要原理就跟判断下降沿一样的思想。

对于我编程风格、基础等存在的问题,欢迎大家提意见。一定认真学习

沃兹基硕德-萌新原理


你可能感兴趣的:(Qt读取txt文件中数据并绘制图像)