Wol*_*ngP 1 c++ qt qlist qhash
我在QAbstractTableModel的派生中使用了一个相当复杂的QList来存储数据:
class MyTableModel : public QAbstractTableModel {
Q_OBJECT
QList<QHash<int, QHash<int, QVariant> *> *> m_data;
/*...*/
};
MyTableModel::~TMusicTableModel() {
/* Should I deallocate QList items? */
}
MyTableModel::setData(int row, int col, int type, QVariant value) {
/* inserting a new data field */
QHash<int, QHash<int, QVariant> *> *row_hash = new QHash<int, QHash<int, QVariant> *>();
QHash<int, QVariant> *role_hash = new QHash<int, QVariant>();
type_hash->insert(type, value);
row_hash->insert(col, type_hash);
m_data.insert(row, row_hash);
return true;
}
Run Code Online (Sandbox Code Playgroud)
我想知道QList和QHashes是否负责处理,或者我是否应该这样做.在这种情况下,文档的信息量不大.
因为您使用"new"创建子项,所以您必须自己解除分配.有关快速执行此操作的信息,请参阅qDeleteAll函数.
你有没有理由使用new来创建这些哈希?(你的代码显然只是一个片段,因此指针可以在其他地方使用和传递.)通常,在堆栈上构造它们要简单得多,以便自动进行破坏.