我有一个internalpointer()
用于他的data()
实现的书面模型(myModel)。我想使用过滤树(基于myModel)QSortFilterProxyModel
,
我让它工作,只有当我尝试从树中获取任何数据时,我的应用程序才会崩溃。
我认为这是因为在调用树数据时,期望得到 myModel indexModel,我得到了myQSortFilterProxyModel
indexModel。
myItem *myModel::getItem(const QModelIndex &index) const
{
if (index.isValid()) {
myItem *item = static_cast<myItem*>(index.internalPointer());
if (item) return item;
}
return rootItem;
}
我的模型data()
使用internalPointer()
QVariant myModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole && role != Qt::EditRole)
return QVariant();
myItem *item = getItem(index);
return item->data(index.column());
}
在 myModel 和树之间设置过滤器模型
void myTree::myInit()
{
...
myModel *model = new myModel();
proxyModel = new mySortFilterProxyModel(this);
proxyModel->setSourceModel(model);
this->setModel(proxyModel);
...
myTree 是 QTreeView 的子类。我想用来tree->model()
获取 myModel 模型
如何获取源模型数据?