在两个显示不同数据列的视图之间共享一个模型

时间:2014-11-07 19:37:35

标签: c++ qt qtableview model-view qabstractitemmodel

在这种情况下,我正在使用遗留代码。我有一个大的出列数据结构。这是数据源。我需要在一个对话框中使用两个QTableView小部件,这些对话框使用相同的数据源,但显示不同的数据列。由于每个表都显示不同的数据列,它们如何共享相同的QAbstractItemModel?这是代理模型的用途吗?

1 个答案:

答案 0 :(得分:3)

代理模型(QSortFilterProxyModelQAbstractProxyModel)用于过滤,排序或其他数据处理任务。在您的情况下,您应该为两个不同的视图使用相同的模型,并在每个视图中隐藏不必要的列:

QTableView *tableView = new QTableView();
QTableView *secondtableView = new QTableView();

MyModel *model = new MyModel();

tableView->setModel(model);
secondtableView->setModel(model);

tableView->setColumnHidden(0, true);
secondtableView->setColumnHidden(2, true);
secondtableView->setColumnHidden(3, true);

QHBoxLayout *layout = new QHBoxLayout(this);
layout->addWidget(tableView);
layout->addWidget(secondtableView);