我有 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()
(没关系;))。
如何在单元格中显示信息column > MyModel::columnCount()
?
我的模型.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)
}