我有一個約2500個自定義項目的列表。我將它們設置爲:QListWidget性能很多自定義項目
const std::vector<const Items::AbstractItem *> results = _engine.request(text);
if (!results.empty())
{
for (auto i : results){
QListWidgetItem *lwi = new QListWidgetItem;
_results->addItem(lwi);
ListItemWidget *w = new ListItemWidget;
w->setName(i->name());
w->setTooltip(i->path());
_results->setItemWidget(lwi, w);
}
_results->setFixedHeight(std::min(5,_results->count()) * 48); // TODO
_results->show();
}
這在i5-4590上需要大約5秒。隱藏小部件速度快兩倍。這是正常的還是我有找錯誤?
與往常一樣,處理性能時運行一個分析器是你應該開始的,因爲它比猜測和試驗要好。我現在得到的關於你的問題的唯一想法是你可以預先分配項目,但我並不認爲內存分配可能是這裏的問題。也許繪畫? – user2672165 2014-08-29 16:11:43