gpt4 book ai didi

c++ - QAbstractitemModel - 无法使用 getItem 和 QModelIndex 获取 QAbstract ModelItem

转载 作者:太空宇宙 更新时间:2023-11-04 12:07:01 24 4
gpt4 key购买 nike

您好,我尝试实现自定义 QAbstractModel 以在 QtreeView 上使用它。

主要要求是存储为树 QDomNode,这样我就可以轻松访问/删除/添加子节点。

但是在这个方法中我收到一个段错误

ProjectTreeItem *ProjectTreeModel::getItem(const QModelIndex &index) const
{
if (index.isValid()) {
ProjectTreeItem *item = static_cast<ProjectTreeItem*>(index.internalPointer());
if (item) return item;
}
return rootItem;
}

这里是整个文件:

http://pastebin.com/HmWZwVmC - 项目树模型.cpp

http://pastebin.com/4nDXDVX0 - projecttreeitem.cpp

这是我尝试做的:

void Ide::slotDeleteItem()
{
/**
* ui->projectsView is a QTreeView with setModel(model)
* model is a ProjectTreeModel
*/
QItemSelectionModel* sel = ui->projectsView->selectionModel();

QModelIndexList lst = sel->selectedIndexes();

QModelIndex ind = lst.at(0);

ProjectTreeItem* item = model->getItem(ind);

/** SEGFAULT even if getItem is moved to public(default is private) **/
qDebug() << item->data(Qt::DisplayRole).toString();
/** SEGFAULT **/
qDebug() << model->data(ind,Qt::DisplayRole);

/** Works and display information correct, but i need to access to ProjectTreeItem **/

qdebug() << ind.data(Qt::DisplayRole);
}

我不确定“内部指针”在做什么,如果有人可以提供帮助,请问?

谢谢!

最佳答案

我找到了问题的根源,这不是模型问题,我使用了一个 QProxyModel 来过滤一些节点,并且提供的所有 QModelIndex 都是无效的。如果要使用 selectionModel 获取选定索引,请不要使用 Qpr​​oxyModel。

关于c++ - QAbstractitemModel - 无法使用 getItem 和 QModelIndex 获取 QAbstract ModelItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11592216/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com