Одна QStandardItemModel для разных QTableView, Generic vs Specific Views - PullRequest
1 голос
/ 31 августа 2010

Я действительно не знаю, имеет ли это смысл, но вот что я пытаюсь сделать:

Я занимаюсь редактором моей игры в QT. В настоящее время я использую QStandardItemModel для хранения всех элементов моей сцены. Эти элементы имеют имена, положение, текстуры (вектор текстуры, который является пользовательским классом), анимации (вектор анимации) и т. Д.

Я считаю полезным иметь один элемент для строки, потому что я могу легко добавлять или удалять эти элементы, помимо их размещения в одном месте, поэтому изменение этой модели должно повлиять на все приложение.

Теперь я пытаюсь сделать определенные представления, скажем, для "Текстур" определенного предмета. Этот QTableView должен показывать имя текстуры, путь и т. Д. Итак, в принципе, как я могу получить вектор текстур в общей модели и заполнить другой вид, не используя другую модель?

1 Ответ

2 голосов
/ 31 августа 2010

Вы захотите использовать модель 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);

Вы должны иметь возможность использовать одну модель и разные прокси для настройки разных представлений.

...