1

これが理にかなっているのかどうかは本当にわかりませんが、これが私がやろうとしていることです:

QTでゲームのエディターをやっています。現在、すべてのシーン アイテムを格納するために QStandardItemModel を使用しています。これらのアイテムには、名前、位置、テクスチャ (カスタム クラスであるテクスチャのベクトル)、アニメーション (アニメーションのベクトル) などがあります。

行に 1 つの項目があると便利だと思います。これらの項目を 1 つの場所に配置するだけでなく、これらの項目を簡単に追加または削除できるため、このモデルを変更するとアプリ全体に影響するはずです。

今、特定のアイテムの「テクスチャ」などの特定のビューを実行しようとしています。この 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);

1 つのモデルと異なるプロキシを使用して、異なるビューをセットアップできるはずです。

于 2010-08-30T21:52:52.493 に答える