QT QTableView控件 实时刷新显示

mika85489 2014-08-04 05:06:17
背景:QT编程,QTableView控件做数据库的显示

QTableView是这样创建的(tableView是QTableView创建的对象):

QStandardItemModel *model;
model=new QStandardItemModel();
ui->tableView->setModel(model);

向tableView里面写数据是使用model->setItem();来对tableView表里面的每一个item进行写。

问题:有大约两万行的数据,每行5列。那么需要执行10万次循环来执行model->setItem()函数,而且问题就在于在进行这10万次循环的时候,主程序是阻塞的,所以很慢。现在希望用什么方法可以给tableView写入100行然后就显示出来,然后每写入100行再显示出来,不阻塞主进程。
求大神解答……
...全文
3618 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
O清醒O 2016-11-16
  • 打赏
  • 举报
回复
请问你解决了吗?我也有这个需求。
mika85489 2014-08-19
  • 打赏
  • 举报
回复
引用 4 楼 soulfy 的回复:
在model->setItem()结束后,加一句qApp->processEvent()试试,强制进行事件循环
OK,试一下
soulfy 2014-08-08
  • 打赏
  • 举报
回复
在model->setItem()结束后,加一句qApp->processEvent()试试,强制进行事件循环
mika85489 2014-08-06
  • 打赏
  • 举报
回复
试过这种方法,具体实现过程是:写入1000行,sleep(1);在sleep(1);的时候,tableview上面是没有显示出来的。 我试过各种试验,结论是只有当model->setItem();所在的函数运行结束后tableview才能显示出来,就不知道这个tableview控件是怎么个实现方法,怎么会这么样???
帅得不敢出门 2014-08-05
  • 打赏
  • 举报
回复
放线程中试试,写100行的时候,sleep线程。
mika85489 2014-08-04
  • 打赏
  • 举报
回复
求大神解答………………

23,114

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧