自定义TableMode模型,继承QAbstractTableModel,自定义数据模型,可加载1千万行大数据
自定义TableMode模型,继承QAbstractTableModel,自定义数据模型。 可以很快得加载完1000万行大数据,并且占用的内存也不大,可加载1千万行大数. 使用QVector作为模型的底层数据结构存储数据,其内存占用与QList相当,尾部追加插入耗时与QList相当,但头部插入比QList耗时较多 QList<Student*> m_itemList;
自定义TableMode模型,继承QAbstractTableModel,自定义数据模型。 可以很快得加载完1000万行大数据,并且占用的内存也不大,可加载1千万行大数. 使用QVector作为模型的底层数据结构存储数据,其内存占用与QList相当,尾部追加插入耗时与QList相当,但头部插入比QList耗时较多 QList<Student*> m_itemList;
QTableWidget大数据文件显示 文件映射mmap 如果文件很大,读取全部的数据会占用很大内存,推荐文件映射的方法,每次交互只读需要显示的文件数据。文件映射1G左右的文件,大概在1.2s左右可以完成文件映射;再进行分页显示,表格固定的是一百行,每次操作对这一百行数据进行刷新,虚拟出完整表格的效果。 测试:QTableWidge分页显示1千万行数据,建立mmap文件映射,只读取需要显示的部分文件内容,此种方式速度快,占用内存小,内存占用149MB左右,每次只读取显示部分的数据,推荐此种方式。
QTableWidget先去读全部的,再进行分页显示,表格固定的是一百行,每次操作对这一百行数据进行刷新,虚拟出完整表格的效果。 测试:QTableWidge分页显示1千万行数据,此种方法优化了文件的读取,可以快速的读取全部的文件内容,表格也只100行,占用内存较小。但是读取了全部大文件,文件占用的较大部分的内存。
先去读全部的,再进行分页显示,只在表格需要在屏幕上显示的那些行填充数据,不显示的不填充数据,表格行数是数据的行数。
QTableWidge动态加载,显示1千万行数据,动态文件加载,开启一个线程读文件,这样就不会因为读取文件时间长导致界面卡死;在QTableWidge采用分页显示,每次交互只加载需要在屏幕上显示的那些行数据,表格固定的是一百行,每次操作对这一百行数据进行刷新,虚拟出完整表格的效果。https://mp.csdn.net/mp_blog/creation/success/129790199
对应地址博客:https://blog.csdn.net/weixin_38293453/article/details/129662982?csdn_share_tail=%7B%22type%22%3A%22blog%22%2C%22rType%22%3A%22article%22%2C%22rId%22 背景: 项目中需要解析1千万多行的文本数据,并显示在QTextEdit中,如果直接读取,直接显示会导致软件非常卡,并且占用非常大的内存。 思路: 在开始实现前,我们最好有一个清晰的思路,可以建个简单的模型: 因此需要优化四个方面: (1)如何快速的解析文件的每一行。 (2)QTextEdit显示全部的数据会直接卡死,如何分页显示,只显示屏幕可见的那一部分数据。 自定义QScrollbar,按照百分比显示 (3) 分页显示,需要先建立文件映射,建立文件的每一行首地址直接映射到内存空间或者硬盘的存储空间,如何快速的匹配换行符位置。 (4)文件映射后,可以使用mmap对大文件只读取
QTableWidget常用实现方式 - 有多少就创建多少,就显示多少,此种方法会卡界面。
QTableView_MODEL VIEW 自定义模型实现,使用标准的StandModemos
QTableView_MODEL VIEW 标准模型实现,性能分析,使用自定义的Mode,大大减小了内存的使用。
一个标准的医学四视图浏览应用程序,包含源代码,源代码比较老,需要的环境是QT 4.8.4 + VS2010 + VTK 5.10.0,详情见博客:https://blog.csdn.net/weixin_38293453/article/details/129406204。 软件已经完成了医学图像四视图的显示。 横断面、矢状面、冠状面还有最后的三维视图。 所谓三维视图就是借助多平面重建(MPR)来展示的。 可以从图中看出,这个程序还完成了VTK中文显示, 还有一些常用的交互操作。 例如:左键放大缩小,右键调整HU值,换切片等,都是联动的