Qt+;QSortFilterProxyModel+;QStandardItemModel+;QTreeView+;移除行时挤压

Qt+;QSortFilterProxyModel+;QStandardItemModel+;QTreeView+;移除行时挤压,qt,qtreeview,qsortfilterproxymodel,Qt,Qtreeview,Qsortfilterproxymodel,将QTreeView与QStandardItemModel和QSortFilterProxyModel一起使用时出现问题。 当我试图从源模型中删除行时,我的程序崩溃了。 在这个地方 parent->removeRow(item->row()); 堆栈看起来像这样 0 ?? /usr/lib/x86_64-linux-gnu/libQtGui.so.4 0 1 ?? /usr/lib/x86_64-linux-gnu/libQtGui.

将QTreeView与QStandardItemModel和QSortFilterProxyModel一起使用时出现问题。 当我试图从源模型中删除行时,我的程序崩溃了。 在这个地方

parent->removeRow(item->row());

堆栈看起来像这样

0       ??      /usr/lib/x86_64-linux-gnu/libQtGui.so.4 0
1       ??      /usr/lib/x86_64-linux-gnu/libQtGui.so.4 0
2       QMetaObject::activate(QObject*, QMetaObject const*, int, void**)         /usr/lib/x86_64-linux-gnu/libQtCore.so.4 
3       QAbstractItemModel::rowsRemoved(QModelIndex const&, int, int)   /usr/lib/x86_64-linux-gnu/libQtCore.so.4 
4       QAbstractItemModel::endRemoveRows()     /usr/lib/x86_64-linux-gnu/libQtCore.so.4
5       Widget::remove_items    widget.cpp
6       Widget::Widget          widget.cpp
7       main                    main.cpp  
我在Qt4.8.3中使用kubuntu 12.10

我的代码有错误吗?还是Qt的错误

谢谢



我试着用4.8.4来构建项目,结果它成功了。所以我认为,如果没有更多的上下文,很难说出它的错误。父指针和项指针是否有效?调用removeRow()的方法看起来如何?在调试器中运行它,查看回溯跟踪。同时尝试删除该项,而不是先删除它。是父项和项是有效指针。此外,我还检查它们是否属于模型。如果(item_index.isValid()&&&(parent->model()==model_)&&(item->model()==model_){removoow()}我还尝试删除项目-删除父项->takeChild(item->row())。但在此之后,在QTreeView中保留项目所在位置的空节点。