티스토리 뷰
목차
반응형
[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지)
Qt qwt 요소를 제대로 삭제하지 않으면 아래처럼 속성들이 겹칩니다. 아래 그림에서 속성을 제대로 삭제했다면 한 색깔의 그래프만 보여야 합니다.
하지만, 모든 색상의 그래프가 겹쳐있네요.
그리고 저 상태로 프로그램을 종료하면 메모리 누수가 일어납니다.
그러니, 아래 소스를 소멸자에 넣어두세요. 그래야 메모리 누수와 그래프 겹침 현상을 막을 수 있습니다.
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 문서를 참고하세요.
[Qt Qwt 강좌] ShapeItem 삭제 예제 (메모리 누수 방지)
반응형