【发布时间】:2016-07-20 22:19:16
【问题描述】:
这个简单sn-p的执行:
{
QModelIndexList sel = ui->tableView->selectionModel()->selectedRows(0);
sel.at(0).isValid(); // To prevent removing the previous line by optimization
}
当所选行数约为100万时需要超过30秒。 QModelIndex 列表的构建几乎是立即的,但销毁需要永远。 花费在这个函数上的时间:
template <typename T>
Q_INLINE_TEMPLATE void QList<T>::node_destruct(Node *from, Node *to)
{
if (QTypeInfo<T>::isLarge || QTypeInfo<T>::isStatic)
while(from != to) --to, delete reinterpret_cast<T*>(to->v);
else if (QTypeInfo<T>::isComplex)
while (from != to) --to, reinterpret_cast<T*>(to)->~T();
}
有人有解决方案吗?有什么方法可以在不创建QModelIndexList 的情况下获取选定行的索引,或者我可以以某种方式加速销毁?
【问题讨论】:
-
您在使用 Visual Studio 吗?我在大地图上遇到了类似的问题,我已经解决了禁用堆调试(将 _NO_DEBUG_HEAP=1 设置为环境变量)(也在发布模式下,但如果应用程序在 Visual Studio 之外运行则不需要)
-
谢谢。我正在使用 MinGW。
标签: qt qabstractitemmodel qmodelindex