한국어
Qt
 

QList나 QVector등과 같은 컨테이너에 new로 생성된 객체가 적재되어 있을때 어느 시점에는 삭제(delete)를 해줘야 한다.

 

그럴때 qDeleteAll함수를 사용하면 매우 유용한데 이 함수는 C++의 delete 연산자를 사용하여 컨테이너의 모든 항목을 삭제해준다.

 

void qDeleteAll(ForwardIterator begin, ForwardIterator end)

void qDeleteAll(const Container & c)

 

간단한 예제 코드이다.

#include <QtAlgorithms> // qDeleteAll함수 관련 헤더 포함

QList<Employee *> list;
list.append(new Employee());
list.append(new Employee());

qDebug() << "count: " << list.count();

qDeleteAll(list.begin(), list.end());

qDebug() << "count: " << list.count(); // 컨테이너의 항목을 제거하지 않는다는 것에 유의하자.

list.clear(); // 컨테이너의 항목을 모두 지운다.

qDebug() << "count: " << list.count(); 

 

다른 예를 들면 QVBoxLayout에 자식 위젯들이 있다고 가정했을때 다음과 같이 사용할 수 있다.

QGroupBox * box = new QGroupBox;
box->setObjectName("PushButtonBox");

QPushButton *button1 = new QPushButton();
QPushButton *button2 = new QPushButton();
QPushButton *button3 = new QPushButton();

QVBoxLayout *vlayout = new QVBoxLayout;
vlayout->addWidget(button1);
vlayout->addWidget(button2);
vlayout->addWidget(button3);

box->setLayout(vlayout);

box->show();

qDebug() << "before: " << box->children();
qDebug() << "count: " << box->children().count();

qDeleteAll(box->children());

qDebug() << "after: " << box->children();
qDebug() << "count: " << box->children().count(); // 여기선 안심하자.

 

번호 제목 글쓴이 날짜 조회 수
공지 Qt프로그래밍(QtQuick) Beginner를 위한 글 읽는 순서 운영자 2019.01.05 91279
» 컨테이너에 적재된 객체를 편리하게 삭제하기 makersweb 2019.09.18 2333
79 C++로 구현된 모델을 QML의 ListView에서 참조 file makersweb 2019.09.07 5819
78 QSocketNotifier로 파일 디스크립터의 활동감지 makersweb 2019.08.28 2507
77 MCU용 Qt에 대해서 makersweb 2019.08.22 2537
76 [Qt News] Qt for Python을 위한 기술 비전 j2doll 2019.08.20 2296
75 열거형(enum)을 QML에서 사용하는 방법과 문자열(QString)로 얻기 makersweb 2019.08.20 4789
74 [Qt News] Qt 6 기술 비전 (Technical vision for Qt 6) [2] j2doll 2019.08.08 2778
73 [Qt News] Qt6 Git 개발 초기 단계 시작하기 j2doll 2019.08.02 3046
72 [Qt] Google Play의 향후 요구 사항을 준수하는 방법 [2] j2doll 2019.07.29 1610
71 Qt기반의 오픈소스 프로젝트들 - 2 운영자 2019.07.21 4746
70 QML, 이미지, 폰트등을 바이너리 리소스로 만들기 makersweb 2019.06.24 4319
69 Qt Creator에서 임베디드 장치로 deploy설정(Custom Process Step) file makersweb 2019.06.15 2982
68 Qt Quick Controls 2사용 및 스타일 설정 file makersweb 2019.06.07 7056
67 QML 강좌 - 동적 Listing (ListView) file makersweb 2019.06.01 11091
66 QtInstallerFramework로 온라인 설치프로그램(Online Installer)만드는 방법 [4] file makersweb 2019.05.28 6991
65 QtCreator Design으로 GUI만들기 (QML로 만드는 Hello World -2) [1] file makersweb 2019.05.26 16404
64 QML에서 멀티 스레드(multithreading) 프로그래밍 file makersweb 2019.05.25 3191
63 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 13539
62 Qt기반의 오픈소스 프로젝트들 makersweb 2019.05.15 6421
61 Q_D매크로와 d-pointer file makersweb 2019.05.07 1525