删除行与QTreeView则儿童QStandardItemModel
问题描述:
我试图删除行与QTreeView则儿童QStandardItemModel
ModelIndexList list = ui->treeView->selectionModel()->selectedRows();
uint size = list.size();
if (size>0) {
for (int i = size - 1; i >= 0; --i) {
QModelIndex index = proxyModel->mapToSource(list[i]);
standardItemModel->removeRow(index.row());
}
它将删除那些与子女行,如果我选择根一行。如果我选择某个子树,那么只有root会被删除,并且在尝试再次删除成为根应用程序崩溃的子项之后。
答
我在removeRow函数中缺少父参数。正确的代码在这里:
ModelIndexList list = ui->treeView->selectionModel()->selectedRows();
uint size = list.size();
if (size>0) {
for (int i = size - 1; i >= 0; --i) {
QModelIndex index = proxyModel->mapToSource(list[i]);
standardItemModel->removeRow(index.row()
/*I was missing this -->*/ , index.parent());
}
我想你应该添加你的答案并接受它。现在很难读出这个问题,因为很难说出什么问题以及哪些问题。 – andr