私には2つのモデルがあります:(
MyModel
、inherits QAbstractItemModel
そのツリー)とMyProxyModel
(inherits QSortFilterProxyModel
)。
MyModelの列数は1で、MyModelの項目には、MyProxyModelを使用してQTableViewに表示する必要のある情報が含まれています。MyProxyModelを。で使用しましたMyProxyModel::columnCount() == 5
。
関数をオーバーロードしMyProxyModel::data()
ました。ただし、テーブルビューには、列1(MyModel::columnCount
)のデータのみが表示されます。
MyProxyModel::data()
デバッグした後、でインデックスのみを取得することがわかりましたcolumn < MyModel::columnCount()
(を使用MyModel::columnCount()
して無視しているようですMyProxyModel::columnCount()
)。
テーブルビューのヘッダーセクションでは、カウントはMyProxyModel::columnCount()
(OK;))に等しくなります。
セル内の情報を表示するにはどうすればよいcolumn > MyModel::columnCount()
ですか?
MyModel.cpp:
int MyModel::columnCount(const QModelIndex& parent) const
{
return 1;
}
MyProxyModel.cpp:
int MyProxyModel::columnCount(const QModelIndex& parent) const
{
return 5;
}
QVariant MyProxyModel::data(const QModelIndex& index, int role) const
{
const int r = index.row(),
c = index.column();
QModelIndex itemIndex = itemIndex = this->index(r, 0, index.parent());
itemIndex = mapToSource(itemIndex);
MyModel model = dynamic_cast<ItemsModel*>(sourceModel());
Item* item = model->getItem(itemIndex);
if(role == Qt::DisplayRole)
{
if(c == 0)
{
return model->data(itemIndex, role);
}
return item->infoForColumn(c);
}
return QSortFilterProxyModel::data(index, role)
}