大数据读入QTableview时有时会卡死

大数据读入QTableview时有时会卡死
我的配置是阿里云的MYSQL,QT5.12 WIN10
modelCrm->select() // 这一步用来将数据显示到tableview
// 我发现select()这一步是将数据全部读入后再显示出来,比如有5万条数据,他是全部都写入tableview,再让tableview显示出来,这样就有有时候出现卡死的情况,我的想法先让他显示出来一部分,比如256条或者512条,随着我拉动tableview的垂直滑块,将数据再全部显示出来
尝试从重写selectStatement() 发现可参考的内容较少,无从下手,请赐教
便拉动tableview的滑块 边显示

可参考

可以参考一下这篇文章:自定义Model秒级加载百万行数据
https://blog.csdn.net/qq_37996632/article/details/123551325?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-123551325-blog-107733899.t5_download_comparev1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-2-123551325-blog-107733899.t5_download_comparev1&utm_relevant_index=3

动态加载,举个例子,先添加100条,很快就好了,当滑到最底部时在加载100条:

connect(ui->listView->verticalScrollBar(),&QAbstractSlider::valueChanged,[=](int value){
        if(value == ui->listView->verticalScrollBar()->maximum()){
            loadData();
        }
    });

如果数据量过大,可以采用

  1. 分页机制,比如每页显示100条记录,点击按钮显示下一页、上一页,或跳到哪页
  2. 动态加载,比如一开始加载100条记录,等用户滚动条移到底部时,再加载100条,依次类推
    另外也可以重写QSqlQueryModel::canFetchMore()QSqlQueryModel::fetchMore()来控制显示数据量

https://gitee.com/sorrowfeng/QWidgetDemo/tree/master/other/dbpage
可以看看这个参考代码,数据库分页加载的