之前使用qlistwidget加载其他widget显示时会存在一个问题,就是大量的数据加载会导致界面之间的切换卡顿。如图所示:大量的数据会导致进入这个界面的速度变慢
原本的代码是这样的
user_log_item* logitem = new user_log_item;
logitem->setInfo(username+"("+usertype+")",op,time,risk);//这里是我给这个条目赋值的一个函数
QListWidgetItem* item =new QListWidgetItem;
item->setSizeHint(QSize(800,40)); //设置每一项的宽高
//ui->listWidget->insertItem(0,item); //使用这个方法插入数据可以使最新的操作记录在最上方
ui->listWidget->addItem(item); //这个方式会依次在下方插入数据
ui->listWidget->setItemWidget(item,logitem);` //把widget,也就是logitem插入到listwidget的item中
现在只需要在这段代码的后面加入这样的代码即可完成分段式加载,需要注意的是在加载完成之前直接销毁窗口会导致程序崩溃,我这里使用延迟释放内存的方式解决的该问题。文章来源:https://www.toymoban.com/news/detail-730363.html
需要加入的代码:文章来源地址https://www.toymoban.com/news/detail-730363.html
//要提前取在最开始定义i的初始值为0
//这里的逻辑是分段式加载,每12个进行一次加载。
if(i-12==0){//设定延迟刷新
QTime reachtime = QTime::currentTime().addMSecs(100);//这个是100毫秒进行一次刷新,每次刷新12个,刷新之后i清零。
while(QTime::currentTime()<reachtime){
QCoreApplication::processEvents(QEventLoop::AllEvents,100);
}
i=0;
}
i++;
到了这里,关于QT记录一个解决QlistWidget列表项加载较慢的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!