簡體   English   中英

帶有QTreeWidget的ExtendedSelection在刪除時崩潰

[英]ExtendedSelection with QTreeWidget crashes on Delete

我正在使用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);
}
}}}

只需使用它,我假設您已經選擇了一些項目,然后單擊刪除按鈕,只需使該按鈕調用此代碼行即可

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM