Qt+;QSortFilterProxyModel+;QStandardItemModel+;QTreeView+;移除行时挤压
将QTreeView与QStandardItemModel和QSortFilterProxyModel一起使用时出现问题。 当我试图从源模型中删除行时,我的程序崩溃了。 在这个地方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.
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中保留项目所在位置的空节点。