【发布时间】:2018-08-13 12:49:17
【问题描述】:
当分配在堆栈上的QStandardItemModel 被销毁时,模型中的指针指向的对象会发生什么情况(例如,item/item2 指针,如下例所示):
QStandardItem* item = new QStandardItem("test");
QStandardItem* item2 = new QStandardItem("test2");
QList<QStandardItem*> list;
list.append(item);
list.append(item2);
QStandardItemModel model;
model.addRow(list);
在这种情况下,如果我理解正确,模型中的行由 N 个值组成,该行中的每个值表示为 QStandardItem。这意味着上面的“列表”对象是一行,有两个值(列)。
这比使用model.setData()、model.setRowCount() 和手动跟踪坐标是好还是坏?
如果需要完整的上下文,则为 here。想法是手动循环 QSqlQuery 结果并以块的形式获取行。相关方法称为loadChunk。
如果模型是堆栈分配的,我是否需要以某种方式管理通过 addRow() 加载到模型的项目的解除分配
TLDR;如何确保模型在分配堆栈时不会泄漏内存,但包含大量指向堆上对象的指针?
【问题讨论】:
-
使用C++智能指针换行
QStandardItem-:)
标签: c++ memory-management qt5 qlist qstandarditem