티스토리 뷰

목차

    반응형

    [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 삭제 예제 (메모리 누수 방지)

    반응형