0

私は試した

 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());
         }

ルート行を選択すると、子を持つ行が削除されます。サブツリーを選択すると、ルートのみが削除され、再度削除しようとすると、ルート アプリケーションがクラッシュします。

4

1 に答える 1

0

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());
     }
于 2013-01-11T11:55:17.917 に答える