QTreeWidget的ExtendedSelection在删除时崩溃

时间:2014-07-18 08:46:19

标签: c++ qt qt4.8

我正在使用QTreeWidget:

mTreeWdg-> setSelectionMode(QAbstractItemView :: ExtendedSelection);

mTreeWdg-> setSelectionBehavior(QAbstractItemView中:: SelectRows);

并具有删除树中所有选定项目的功能。当我点击每一个,它工作正常。但是当我通过先点击选择项目,然后结束最后一项时,它会删除第一项然后崩溃。

OnBtnClickedDelete(){
QList<QTreeWidgetItem* > list = mTree->selectedItems();
QList<QTreeWidgetItem*>::iterator it;

for(it=list.begin(); it!= list.end(); it++)
{
try
{  
    QTreeWidgetItem* current_item=*it;
    if(current_item != 0 )
    {
        int ind=current_item->data(0,Qt::UserRole).toInt();
        if(ind > 0)
        {
            if(MyMessageBox(
                tr("Are you sure you want to " \
                "delete this ?"),       
                QMessageBox::Question,
                QMessageBox::Yes | QMessageBox::No)==QMessageBox::Yes)
            {
                mPro.mDelete(ind-1);
                mSth.Clear();

                this->RefreshTree();

                EnableAllControls(false);

                if(this->mTree->topLevelItemCount() == 1 )
                {             
                    EnableButtons(FALSE);
                    set_enabled(mButtonGenerate,true);
                    set_enabled(mButtonNew,true);
                }
            }
        }            
    }    
}

catch (std::exception& e)
{
    default_exception_handler(e);
}
}}}

1 个答案:

答案 0 :(得分:0)

只需使用此功能,我假设您已选择了一些项目,然后单击删除按钮,只需按下按钮调用此行代码

qDeleteAll(this->mTree->selectedItems());