• 2551阅读
  • 10回复

[提问]表格刷新过快导致界面卡死的问题 [复制链接]

上一主题 下一主题
 

只看楼主 倒序阅读 楼主  发表于: 2019-12-03
回复本帖可获得1RMB金钱奖励!
每人最多可获奖1次,奖池剩余5RMB金钱 (中奖几率50%)
  1. void MainWindow::timerouth(){
  2.     QByteArray byte = "1122334455667788";
  3.     byte = QByteArray::fromHex(byte);
  4.     int n = 0;
  5.     for(int j=0;j<8;j++){
  6.         k[j] = (uint8_t)byte.data()[j];
  7.         for(int t=0;t<8;t++){
  8.             QString tmp = QString("%1.%2").arg(j).arg(t);
  9.             QTableWidgetItem *item = new QTableWidgetItem(tmp);
  10.             ui->tableWidget->setItem(n,1,item);
  11.             n++;
  12.             if(k[j]&(1<<t))item->setBackground(Qt::green);
  13.             else item->setBackground(Qt::gray);
  14.         }
  15.     }
  16. }

各位大佬,能否告诉我这样使用表格为什么会导致界面很卡?


离线九重水

只看该作者 1楼 发表于: 2019-12-03
回帖奖励+ 1

虽然编辑很乱,也不知道你的刷新时间是多少?
但是为什么每次进来都new表格项了?删除创建是很耗时间的。
需要new才new,不需要的直接修改表格数据就行了。

只看该作者 2楼 发表于: 2019-12-03
回 九重水 的帖子
九重水:[表情]
虽然编辑很乱,也不知道你的刷新时间是多少?
但是为什么每次进来都new表格项了?删除创建是很耗时间的。
需要new才new,不需要的直接修改表格数据就行了。 (2019-12-03 17:35) 

刷新时间是50ms,我不知道怎么操作项,所以每一次都new一个新的项
离线liulin188

只看该作者 3楼 发表于: 2019-12-03
我也遇到过这种烦恼,1次新增2000数据,卡的要死,最后只能调成1秒
https://wiki.qt.io/Qt_5.12_Release
https://wiki.qt.io/New_Features_in_Qt_5.12
https://wiki.qt.io/Qt_5.12.0_Known_Issues
https://www.qt.io/blog/qt-5.13.2-released
https://www.qt.io/blog/qt-creator-4.10.2-released
https://wiki.qt.io/Qt_5.12_Tools_and_Versions
离线snow_man_0

只看该作者 4楼 发表于: 2019-12-04
回帖奖励+ 1
不要new QTableWidgetItem
用QTableWidgetItem的setText

只看该作者 5楼 发表于: 2019-12-04
回 snow_man_0 的帖子
snow_man_0:不要new QTableWidgetItem
用QTableWidgetItem的setText (2019-12-04 01:18) 

谢谢评论,那要在哪里new呢,我在构造函数里new会报错

只看该作者 6楼 发表于: 2019-12-04
回 liulin188 的帖子
liulin188:我也遇到过这种烦恼,1次新增2000数据,卡的要死,最后只能调成1秒 (2019-12-03 20:10) 

谢谢评论
离线20091001753

只看该作者 7楼 发表于: 2019-12-04
回帖奖励+ 1
item 只有在没有的时候,才需要创建。
如果已经存在,只需要修改数据即可。
(づ ̄ 3 ̄)づ

只看该作者 8楼 发表于: 2019-12-05
回 20091001753 的帖子
20091001753:item 只有在没有的时候,才需要创建。
如果已经存在,只需要修改数据即可。 (2019-12-04 18:12) 

好的,谢谢版主。
离线mmario

只看该作者 9楼 发表于: 2019-12-11
回帖奖励+ 1
数量量太大的表格就不用这种方式,用model/View的方法加载数据
离线feng851

只看该作者 10楼 发表于: 2019-12-30
回帖奖励+ 1
要不你试试前面加个blockSignals(true) 完了后再加个blockSignals(false)?
快速回复
限100 字节
 
上一个 下一个