1

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

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

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

现在,我正在尝试为某个项目的“纹理”做特定的视图。这个 QTableView 应该显示纹理的名称、路径等。所以,基本上我怎样才能在一般模型中获取纹理的向量并填充另一个视图而不做另一个模型?

4

1 回答 1

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);

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

于 2010-08-30T21:52:52.493 回答