본문 바로가기
qt 사용하기

Parenting system

by Beijing_KingGod 2019. 12. 19.

parenting system(부모와 자식 관계)은 Qt의 객체, 특히 위젯을 처리하는 편리한 방법입니다.

QObject에서 상속 된 모든 객체는 부모와 자식을 가질 수 있습니다.

이 계층 구조 트리는 많은 것들을 편리하게 만듭니다 :

 

1) 객체가 파괴되면 모든 자식도 파괴됩니다. 따라서 경우에 따라 delete 호출은 선택 사항이됩니다.

2) 모든 QObject에는 지정된 객체의 자식을 검색하는 데 사용할 수있는 findChild 및 findChildren 메소드가 있습니다.

3) QWidget의 자식 위젯은 부모 위젯 안에 자동으로 나타납니다.

 

 

ex) QPushButton 안에 QPushButton 만들기

 

#include <QApplication>
#include <QPushButton>

int main(int argc, char **argv)
{
 QApplication app (argc, argv);

 QPushButton button1 ("test");
 QPushButton button2 ("other", &button1);

 button1.show();

 return app.exec();
}

버튼 1 안에 버튼 2가 있는 상황 ...

 

 

 

또한 응용 프로그램이 닫히면 스택에 할당 된 button1이 할당 해제됩니다.

button2에 있는 스택메모리는 button1이 부모로 있으므로 자동으로 삭제됩니다. 메모리 누수를 검색하여 분석 섹션의 Qt ​​Creator에서이를 테스트 할 수도 있습니다.

 

버튼 안에 버튼을 넣는 데는 아무런 이점이 없지만이 아이디어를 기반으로 아무 것도 표시하지 않는 컨테이너 안에 버튼을 넣을 수 있습니다. 이 컨테이너는 단순히 QWidget입니다.

 

ex) widget 안에 button 넣기

#include <QApplication>
#include <QPushButton>

int main(int argc, char **argv)
{
 QApplication app (argc, argv);

 QWidget window;
 window.setFixedSize(100, 50);

 QPushButton *button = new QPushButton("Hello World", &window);
 button->setGeometry(10, 10, 80, 30);

 window.show();
 return app.exec();
}

 

크기가 너무작아서 버튼과 widget 사이즈 변경했음.

setFixedSize를 사용하여 고정 크기 위젯 을 만듭니다. 이 method에는 다음과 같이 작성되어있다.

void QWidget::setFixedSize(int width, int height);

또한 setGeometry를 사용하여 버튼을 배치했습니다. 이 method에는 다음과 같이 작성되어있다.

 

void QWidget::setGeometry(int x, int y, int width, int height);

 

'qt 사용하기' 카테고리의 다른 글

Subclassing QWidget  (0) 2019.12.19
Qt class hierarchy  (0) 2019.12.19
A pretty button- 버튼 꾸미기  (0) 2019.12.19
Qt 프로그램 컴파일 방법-qmake  (0) 2019.12.19
qt 모듈  (0) 2019.12.19

댓글