(1)具体的行更新
QModelIndex modelIndex = this->index(indexItem, 0, QModelIndex());
emit this->dataChanged(modelIndex, modelIndex);
其中indexItem为要更新的行索引。
同理,具体列更新如下:
QModelIndex modelIndex = this->index(0, indexItem, QModelIndex());
emit this->dataChanged(modelIndex, modelIndex);
其中indexItem为要更新的列索引。
(2)插入时触发行更新
beginInsertRows(QModelIndex(), pos, pos);
m_datas.insert(pos, itemInfo);
endInsertRows();
其中pos为要插入的位置,即在ListView中的第几项。itemInfo为要插入的内容。
同理,插入时触发列更新如下:
void beginInsertColumns(const QModelIndex &parent, int first, int last);
void endInsertColumns();
(4)整体更新
void beginResetModel();
void endResetModel();
(5)移除行后的更新
void beginRemoveRows(const QModelIndex &parent, int first, int last);
void endRemoveRows();
同理,移除列后的更新如下:
void beginRemoveColumns(const QModelIndex &parent, int first, int last);
void endRemoveColumns
QModelIndex modelIndex = this->index(indexItem, 0, QModelIndex());
emit this->dataChanged(modelIndex, modelIndex);
其中indexItem为要更新的行索引。
同理,具体列更新如下:
QModelIndex modelIndex = this->index(0, indexItem, QModelIndex());
emit this->dataChanged(modelIndex, modelIndex);
其中indexItem为要更新的列索引。
(2)插入时触发行更新
beginInsertRows(QModelIndex(), pos, pos);
m_datas.insert(pos, itemInfo);
endInsertRows();
其中pos为要插入的位置,即在ListView中的第几项。itemInfo为要插入的内容。
同理,插入时触发列更新如下:
void beginInsertColumns(const QModelIndex &parent, int first, int last);
void endInsertColumns();
(4)整体更新
void beginResetModel();
void endResetModel();
(5)移除行后的更新
void beginRemoveRows(const QModelIndex &parent, int first, int last);
void endRemoveRows();
同理,移除列后的更新如下:
void beginRemoveColumns(const QModelIndex &parent, int first, int last);
void endRemoveColumns

本文详细介绍了在QML中如何针对ListView和GridView等对象进行数据模型的更新。当数据发生变化时,可以使用特定的更新函数如endMoveColumns()和dataChanged()来实时反映界面更新。如果仅部分数据变动,如某一行改变,可以精确调用dataChanged()方法更新指定的QModelIndex,避免全数据刷新,提升用户体验。
最低0.47元/天 解锁文章
1326

被折叠的 条评论
为什么被折叠?



