2011-07-27 2 views
2

C++ Qt 애플리케이션을 작성 중입니다. 한 부분에서는 QTreeWidget을 만들고 있습니다. 사용자는 해당 트리에서 항목을 작성하고 삭제할 수 있습니다.qt 4.7 removeChild() 및 메모리

QTreeWidgetItem* curItem = _ui->qTreeWidget->currentItem(); 
QTreeWidgetItem* parent = curItem->parent(); 
parent->removeChild(curItem); 
을 :

사용자가 나중에 항목을 삭제하기로 결정
QTreeWidgetItem* newItem = new QTreeWidgetItem(); 

, 그 다음 그 자체가 호출하는 함수를 호출하여 사용자가 항목을 생성 그래서 때 그는 그 자체를 호출하는 함수를 호출합니다

나를 지우는 질문은 지금 :이 항목이 차지한 기억은 어떨까요?

무효 QTreeWidgetItem ::로 removeChild (QTreeWidgetItem * 아이) 아이로 표시 주어진 항목을 제거 : 무엇 Qt는 4.7 문서가로 removeChild를 말합니다하면 다음과 같다. 삭제 된 항목은 삭제되지 않습니다.

그래서 어떻게 아이를 삭제합니까?

미리 감사드립니다. 도니

+0

;'? –

+0

@Donny : 당신이 새로운 것을 알았습니다 (StackOverflow). 우선이 사이트에 오신 것을 환영합니다! [faq] (http://stackoverflow.com/faq)를 살펴 보았습니까? 나는 당신이 당신의 질문에 대한 어떤 대답에도 투표하지 않았 음을 알기 때문에 묻고 있습니다. 유용한 답을 찾으면 답의 왼쪽에있는 작은 삼각형을 클릭해야합니다. 이것은 포스터에게 "평판"으로 보상하고 대답이 도움이되었음을 나타냅니다. 만일 당신이 이미 SO 세관에 익숙하고 의도적으로 투표하지 않았다면,이 코멘트를 무시하십시오 :)! 어쨌든, 너무 재미있어! –

답변

2

어떻게

delete curItem; 

어떻습니까?

documentation에 따르면 소멸자가 포함 된 트리에서 항목을 제거하므로 사전에 removeChild을 수행 할 필요조차 없다고 생각합니다.

2

당신은 일반적으로 단지와 적절한 시간에 개체를 삭제합니다 : 제거 그냥 부모로부터의 링크를 제거하고

delete curItem; 

.

혹은 deletion later에 예약 : 어떻게`curItem 삭제에 대한

curItem->deleteLater(); 
+1

QTreeWidgetItem은 QObject가 아니므로 deleteLater()를 호출 할 수 없습니다. – Chris

관련 문제