Mainwindow
,其中包含使用
QListView
的
QAbstractListModel
。当我启动应用程序时,我使用线程工作线程启动一个线程,该线程从外部 Web 服务获取数据记录,每个线程获取 10-20 条记录 迭代。
问题:
在从大 while 循环中的线程工作者开始的
HttpAggrigator
类中,迭代每个返回的记录,我向另一个名为
ViewControler
的类发出信号,它的工作是填充
QListView
模型。在这部分中,我的窗口只是冻结,直到所有项目都在列表视图中设置。
我检查了名为“
Sleepy”的分析工具,确实,设置项目的ViewControler
方法导致速度变慢。流程:
MainWindow
-> 开始
HttpAggrigator
(在不同的线程中)。
HttpAggrigator
-> 获取记录 -> 开始迭代它们(以填充数据对象)。
HttpAggrigator
-> 在每次记录迭代时向
ViewControler
发出信号,将项目构建到
MainWindow
QListView
。
一次对多个项目使用这样的方法
void LostModel::addItems(QList<MyItem *> items)
{
if(items.size())
{
int begin = MyItemList.size();
beginInsertRows(QModelIndex(), begin, begin + items.size() - 1);
MyItemList.append(items);
endInsertRows();
}
}