在本例中,我使用的是遗留代码。我有一个很大的出列数据结构。这是数据源。我需要在一个对话框上使用两个QTableView
小部件,它们使用相同的数据源,但显示不同的数据列。由于每个表显示的数据列不同,它们如何共享相同的QAbstractItemModel
?这就是代理模型的作用吗?
代理模型(QSortFilterProxyModel
或QAbstractProxyModel
)用于过滤、排序或其他数据处理任务。在您的情况下,您应该对两个不同的视图使用相同的模型,并在每个视图中隐藏不必要的列:
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);