// QAbstractItemModel::reset();
这个在QT5里面已经移除了,然后搜到一个网页说用下面两条替代
QAbstractItemModel::beginResetModel();
QAbstractItemModel::endResetModel();
但是我看了官方文档不是直接这么甩两条语句在一起用的
果不其然
请大家说说这两个函数怎么用的?
------解决思路----------------------
一般是自定义一个子类 然后再修改数据之前 begin 修改之后end
------解决思路----------------------
这样吧。
void GQStats::clear()
{
QAbstractItemModel::beginResetModel();
for (int i = 0; i < NUM_CATEGORIES; i++)
{
_records[i].clear();
_headers[i].children.clear();
}
_timer_stack.clear();
_constant_stack.clear();
_layout_changed = false;
_data_changed = false;
// QAbstractItemModel::reset();
QAbstractItemModel::endResetModel();
}
------解决思路----------------------
void GQStats::clear()
{
beginRemoveRows(QModelIndex(), 0, rowCount());
for (int i = 0; i < NUM_CATEGORIES; i++)
{
_records[i].clear();
_headers[i].children.clear();
}
_timer_stack.clear();
_constant_stack.clear();
_layout_changed = false;
_data_changed = false;
// QAbstractItemModel::reset();
endRemoveRows();
}
clear里面不用reset用remove
------解决思路----------------------
_records[i].clear();
_headers[i].children.clear();
_timer_stack.clear();
_constant_stack.clear();
看看是不是这四个中有空指针问题