2013-01-11 104 views
0

我試圖刪除行與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會被刪除,並且在嘗試再次刪除成爲根應用程序崩潰的子項之後。

+0

我想你應該添加你的答案並接受它。現在很難讀出這個問題,因爲很難說出什麼問題以及哪些問題。 – andr

回答

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