한국어
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 86218
30 QTextCodec클래스를 사용하여 유니코드와 EUC-KR 변환 makersweb 2019.03.25 2911
29 Windows에서 Qt D-Bus를 사용하여 프로세스간 통신(IPC) file makersweb 2019.05.02 4514
28 Q_D매크로와 d-pointer file makersweb 2019.05.07 763
27 Qt기반의 오픈소스 프로젝트들 makersweb 2019.05.15 5463
26 QtSerialPort를 사용한 시리얼(Serial)통신 [3] makersweb 2019.05.21 11984
25 Qt기반의 오픈소스 프로젝트들 - 2 운영자 2019.07.21 4024
24 [Qt News] Qt 6 기술 비전 (Technical vision for Qt 6) [2] j2doll 2019.08.08 2123
23 [Qt News] Qt for Python을 위한 기술 비전 j2doll 2019.08.20 1627
» 컨테이너에 적재된 객체를 편리하게 삭제하기 makersweb 2019.09.18 1672
21 많은 리소스를 사용하는 Qt프로젝트에서 고려해봐야 할 qmake 옵션 makersweb 2019.10.11 1237
20 QOpenVirtualkeyboard(Qt 5용 한글 및 영문, 숫자 가상키보드) file makersweb 2019.11.27 2251
19 Qt Marketplace 발표 makersweb 2019.12.02 617
18 Qt의 오픈소스 라이센스 소개 file makersweb 2019.12.15 12636
17 Qt 멀티 스레드 프로그래밍 시 유의해야 할 몇 가지 makersweb 2020.01.13 4900
16 2020년에 변경되는 Qt 오퍼 (Qt offering changes 2020) [2] j2doll 2020.01.31 723
15 QOpenGLWidget 을 투명하게 적용 file makersweb 2020.02.05 1047
14 콘솔에서 사용자 입력받기 file makersweb 2020.03.22 51864
13 Qt기반의 서버와 클라이언트간 SOAP(Simple Object Access Protocol) file makersweb 2020.05.11 978
12 UI 폼(Form)작성 시 탭 순서(Tab Order) 설정 file makersweb 2020.08.24 2815
11 Qt 를 사용하거나 기반으로 하는 응용프로그램 file makersweb 2021.01.30 3858