본문 바로가기
C++ 200제/코딩 IT 정보

[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지)

by vicddory 2018. 5. 6.

[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지)


Qt qwt 요소를 제대로 삭제하지 않으면 아래처럼 속성들이 겹칩니다. 아래 그림에서 속성을 제대로 삭제했다면 한 색깔의 그래프만 보여야 합니다.


하지만, 모든 색상의 그래프가 겹쳐있네요.


Qt QWT Shape Item


그리고 저 상태로 프로그램을 종료하면 메모리 누수가 일어납니다.


그러니, 아래 소스를 소멸자에 넣어두세요. 그래야 메모리 누수와 그래프 겹침 현상을 막을 수 있습니다.


1
2
3
4
5
6
7
8
9
10
/** 기존의 ShapeItem 삭제 */
QwtPlotItemList list = plot_goods_->itemList();
 
for (QwtPlotItemIterator it = list.begin();
     it != list.end(); it++) {
    if((*it)->rtti() == QwtPlotItem::Rtti_PlotShape)
        plot_goods_->detachItems(QwtPlotItem::Rtti_PlotShape, false);
}
 
list.clear();
cs


QwtPlotItemList 객체를 만들어 내부 요소들을 모조리 끌고 옵니다.


그리고 나선 for문을 통해 모든 내부 요소를 삭제하면 됩니다. 간단해요. 개별 요소를 삭제할 땐, QwtPlotItem 클래스를 참조해 해당 요소들을 삭제하면 됩니다.


마지막으로 이 부분을 이해하기 위해선 Qwt 문서를 참고하세요.



QwtPlotItem - Tree


[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지)

댓글