查看完整版本: [-- 表格刷新过快导致界面卡死的问题 --]

QTCN开发网 -> Qt基础编程 -> 表格刷新过快导致界面卡死的问题 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

为你而回忆 2019-12-03 16:25

表格刷新过快导致界面卡死的问题

  1. void MainWindow::timerouth(){
        QByteArray byte = "1122334455667788";
        byte = QByteArray::fromHex(byte);
        int n = 0;
        for(int j=0;j<8;j++){
            k[j] = (uint8_t)byte.data()[j];
            for(int t=0;t<8;t++){
                QString tmp = QString("%1.%2").arg(j).arg(t);
                QTableWidgetItem *item = new QTableWidgetItem(tmp);
                ui->tableWidget->setItem(n,1,item);
                n++;
                if(k[j]&(1<<t))item->setBackground(Qt::green);
                else item->setBackground(Qt::gray);
            }
        }
    }

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



九重水 2019-12-03 17:35

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

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

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

liulin188 2019-12-03 20:10
我也遇到过这种烦恼,1次新增2000数据,卡的要死,最后只能调成1秒

snow_man_0 2019-12-04 01:18
不要new QTableWidgetItem
用QTableWidgetItem的setText

为你而回忆 2019-12-04 08:56
snow_man_0:不要new QTableWidgetItem
用QTableWidgetItem的setText (2019-12-04 01:18) 

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

为你而回忆 2019-12-04 08:56
liulin188:我也遇到过这种烦恼,1次新增2000数据,卡的要死,最后只能调成1秒 (2019-12-03 20:10) 

谢谢评论

20091001753 2019-12-04 18:12
item 只有在没有的时候,才需要创建。
如果已经存在,只需要修改数据即可。

为你而回忆 2019-12-05 16:02
20091001753:item 只有在没有的时候,才需要创建。
如果已经存在,只需要修改数据即可。 (2019-12-04 18:12) 

好的,谢谢版主。

mmario 2019-12-11 16:14
数量量太大的表格就不用这种方式,用model/View的方法加载数据

feng851 2019-12-30 11:47
要不你试试前面加个blockSignals(true) 完了后再加个blockSignals(false)?


查看完整版本: [-- 表格刷新过快导致界面卡死的问题 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled