根据用户的视图更改更新模型
Updating a model based on view changes by the user?
我有一个由QTableView
显示的QStandardItemModel
。
这是一个示例QTableView
:
+------+------+
| Col1 | Col2 |
+------+------+
| A | B |
| C | D |
+------+------+
每个单元格的索引如下:
[0,0]: A
[0,1]: B
[1,0]: C
[1,1]: D
我允许用户像这样重新排序QTableView
中的列:
+------+------+
| Col2 | Col1 |
+------+------+
| B | A |
| D | C |
+------+------+
索引保持不变,因为用户已更改 view 而不是模型。但是,我希望模型(和索引)在用户在视图中重新列出列时进行更新。如何更改模型以使我得到以下内容?
[0,0]: B
[0,1]: A
[1,0]: D
[1,1]: C
假设model
是类型QStandardItemModel*
,并且实际上只有两个列,那么您应该可以简单地做...
QStandardItem *root = model->invisibleRootItem();
for (int row = 0; row < root->rowCount(); ++row) {
QStandardItem *left = root->child(row, 0);
QStandardItem *right = root->child(row, 1);
QMap<int, QVariant> data = model->itemData(left->index());
model->setItemData(left->index(), model->itemData(right->index()));
model->setItemData(right->index(), data);
}
我不确定您为什么要这样做 - 似乎违反了模型/视图分离想法。
相关文章:
- 从C++本机插件更新Vector3数组
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- QTableView:endMoveRows在模型中重置水平页眉大小
- cmake更新缓存的变量
- 将IBM Rhapsody模型集成到VS 2019中
- 旋转模型矩阵时的形状失真
- 更新模型/视图方案中 QXXXView (QTableView, QTreeView,..) 元素的显示工具提示
- 从高度动态的C 数据模型中更新QML:计时器与属性绑定
- OpenGL-更新模型信息的最有效方法(例如模型矩阵)
- 根据用户的视图更改更新模型
- Qt模型视图:当数据存储和更改数据时,更新模型和视图的正确方法是什么::vector
- 在具有多行的 GtkTreeView 中,如何以编程方式更新特定行上的 GtkCellRendererCombo 模型
- 更改模型后视图未更新
- 图层下降和更新咖啡模型
- 在向模型添加新数据后,QML TreeView没有在运行时更新
- 视图类没有接收更新的模型类数据
- 更新FBX SDK模型加载从2012.2到2014.1 SDK
- Qt QTreeView添加到模型时不更新
- 从运行QML QtQuick2引擎的不同线程更新c++模型的行为
- 如何处理大容量模型更新场景中无响应的UI