小编Sla*_*kij的帖子

QModelIndexList的析构函数太慢了

执行这个简单的代码片段:

{
  QModelIndexList sel = ui->tableView->selectionModel()->selectedRows(0);
  sel.at(0).isValid(); // To prevent removing the previous line by optimization
}
Run Code Online (Sandbox Code Playgroud)

当所选行的数量约为一百万时,需要超过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();
}
Run Code Online (Sandbox Code Playgroud)

有人有解决方案吗?有没有办法在没有创建的情况下获取所选行的索引QModelIndexList,或者我可以以某种方式加速破坏?

qt qabstractitemmodel qmodelindex

5
推荐指数
1
解决办法
137
查看次数

Qt QJsonDocument::fromBinaryData() 不起作用

这是简单的代码:

QByteArray ba  = jdoc.toBinaryData();
QJsonDocument jdoc2;
jdoc2.fromBinaryData(ba);
qDebug() << jdoc.isNull();
qDebug() << jdoc2.isNull();
Run Code Online (Sandbox Code Playgroud)

结果:jdoc不为空,而是jdoc2为空。我究竟做错了什么?看起来jdoc2.fromBinaryData(ba);根本不起作用。我使用 Qt 5.5.0

c++ qt json qt5

2
推荐指数
1
解决办法
470
查看次数

标签 统计

qt ×2

c++ ×1

json ×1

qabstractitemmodel ×1

qmodelindex ×1

qt5 ×1