一个QStandardItemModel用于不同的QTableView,Generic和Specific Views

时间:2010-08-30 20:04:11

标签: qt model qtableview

我真的不知道这是否有意义,但这就是我想要做的事情:

我在QT做我的游戏编辑。目前我正在使用QStandardItemModel来存储我的所有场景项目。这些项目有名称,位置,纹理(纹理矢量,自定义类),动画(动画矢量)等。

我发现将一个项目用于行是有用的,因为除了将它们放在一个地方之外,我可以轻松地添加或删除这些项目,因此更改此模型应该会影响整个应用程序。

现在,我正在尝试针对某个项目的“纹理”进行具体观看。这个QTableView应该显示纹理的名称,路径等。所以,基本上如何在一般模型中抓取Textures的矢量并在不做另一个模型的情况下填充另一个视图?

1 个答案:

答案 0 :(得分:2)

您将需要使用QSortFilterProxy模型。像这样设置一个。

QTableView *tableView = new QTableView;
MyItemModel *sourceModel = new MyItemModel(this);
QSortFilterProxyModel *proxyModel = new QSortFilterProxyModel(this);

proxyModel->setSourceModel(sourceModel);
proxyModel->setFilterKeyColumn(column_#_to_filter_by);
proxyModel->setFilterRegExp(a_regex_that_matches_the_item_you_want_to_display);
tableView->setModel(proxyModel);

您应该能够使用一个模型和不同的代理来设置不同的视图。