在Qt中,修改listTabel(新模型)
的数据模型而不改变m_tableView(原模型)
的数据模型,需要为listTabel
创建一个独立的数据模型,通过深拷贝数据来实现。可以与m_tableView
的数据模型分离开来。
假设m_tableView
已经有一个模型m_model
:
QStandardItemModel *m_model = new QStandardItemModel();
// 初始化 m_model...
m_tableView->setModel(m_model);
QTableView *listTabel = new QTableView();
// 创建一个新的模型
QStandardItemModel *newModel = new QStandardItemModel(m_model->rowCount(), m_model->columnCount());
// 复制数据
for (int row = 0; row < m_model->rowCount(); ++row) {
for (int column = 0; column < m_model->columnCount(); ++column) {
QModelIndex index = m_model->index(row, column);
QStandardItem *item = m_model->itemFromIndex(index);
QStandardItem *newItem = item->clone();
newModel->setItem(row, column, newItem);
}
}
// 将新的模型设置给 listTabel
listTabel->setModel(newModel);