在flags虚拟方法中基础为QSortFilterProxyModel
的代理模型中:
Qt::ItemFlags File_List_Proxy::flags(const QModelIndex& index) const
{
if(index.isValid())
{
return QAbstractItemModel::flags(index) |
Qt::ItemIsUserCheckable |
Qt::ItemIsSelectable;
}
else
{
return Qt::NoItemFlags;
}
}
如果函数如上所示(IDENTICAL为模型版本...只是复制并粘贴),则项目会正确显示。但是,如果我更改此方法的def以使用sourceModel():
Qt::ItemFlags File_List_Proxy::flags(const QModelIndex& index) const
{
return sourceModel()->flags(index);
}
...然后我的listView上的项目处于非活动状态。为什么呢?
答案 0 :(得分:1)
如果将索引映射到源模型索引会发生什么?
Qt::ItemFlags File_List_Proxy::flags(const QModelIndex& index) const
{
return sourceModel()->flags(this->mapToSource(index));
}
因为从我的观点来看,索引与同一模型无关,所以它是无效的