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();
}
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 |
댓글