QT编程(大型)资料的处理
Posted steven_lg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT编程(大型)资料的处理相关的知识,希望对你有一定的参考价值。
我们在编程有时候会对一个比较大的数据集进行编辑和读取操作,QT编程中同样会遇到这样的问题。
在MCU编程中我们通常直接初始化为数组或者写进FLASH中处理,在QT中显然是不能这样处理的,虽然PC的RAM 是够的,但是会使用运行界面卡顿停滞,运行奔溃等。不过QT提供了类似的方法来处理这样的问题。
方法一:通过文件(.db)(.txt)的方式来存储资料,QT提供了对文件的读写操作接口。
方法二:通过数据库的方式,QT提供了数据库相关的接口供用户使用。
这章节我们讲使用文件方法来处理(大型)资料。
1.资料文件的生成。这需要单独的程序工程编译生成资料文件。
QFile file("./bin.dat"); //生成文件夹bin.dat file.open(QIODevice::WriteOnly|QIODevice::Truncate); //流打开文件 QDataStream out(& file); //向文件中写入数据 out <<uchar(35)<<uchar(35)<<uchar(36)<<uchar(35)<<uchar(37)<<uchar(35)<<uchar(38)<<uchar(35)<<uchar(39)<<uchar(35)<<uchar(40)<<uchar(35)<<uchar(41)<<uchar(35)<<uchar(42)<<uchar(35)<<uchar(43)<<uchar(35)<<uchar(44)<<uchar(35)<<uchar(45)<<uchar(35)<<uchar(46)<<uchar(35)<<uchar(47)<<uchar(35)<<uchar(48)<<uchar(35)<<uchar(49)<<uchar(35)<<uchar(50)<<uchar(35)<<uchar(51)<<uchar(35)<<uchar(52)<<uchar(35)<<uchar(53)<<uchar(35)<<uchar(54)<<uchar(35)<<uchar(55)<<uchar(35)<<uchar(56)<<uchar(35)<<uchar(57)<<uchar(35)<<uchar(58)<<uchar(35); qDebug() << file.size()/24/2; //输出文件字节数大小 file.close(); //关闭文件
2.通过第一步可以得到bin.dat的二进制文件,在这一步中通过流方式依次读取文件中的数据。
file.setFileName("bin.db"); //设置文件名目录 if(!file.open(QIODevice::ReadOnly)) //文件打开设置 { qDebug() << "error!"; return; } QDataStream in(&file); //打开文件 uchar data[20]; //文件数据输出到数组 in >> data[0] >>data[1] >>data[2] >>data[3] >>data[4] >>data[5] >>data[6] >>data[7] >>data[8] >>data[8] >> data[9] >>data[10] >>data[11] >>data[12] >>data[13] >>data[14] >>data[15] >>data[16] >>data[17] >>data[18] >>data[19] ; qDebug<< data[0] <<data[1] <<data[2] <<data[3] <<data[4] <<data[5] <<data[6] <<data[7] <<data[8] <<data[8] << data[9] <<data[10] <<data[11] <<data[12] <<data[13] <<data[14] <<data[15] <<data[16] <<data[17] <<data[18] <<data[19] ; //打印数组内容 file.close();
第一步把生成的文件放到工程根目录,通过程序调用方式读出资料的方法,可有小提高程序的稳定性及效率。
在POVled项目取模上位中,我使用了这种方法来存储需要取模的点的坐标,如果需要处理更大型的资料可以参试数据的方法。
以上是关于QT编程(大型)资料的处理的主要内容,如果未能解决你的问题,请参考以下文章