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编程(大型)资料的处理的主要内容,如果未能解决你的问题,请参考以下文章

985大学的高材生只会写代码片段,丢人吗?

985高校的高材生只会写代码片段,丢人吗?

985大学的高材生只会写代码片段,丢人吗?

985大学的高材生只会写代码片段,丢人吗?

985大学的高材生只会写代码片段,丢人吗?

译文:18个实用的JavaScript代码片段,助你快速处理日常编程任务