기사 디렉토리
머리말
이번 글에서는 레이아웃 관리자의 사용법에 대해 설명하겠습니다. 레이아웃 관리자는 인터페이스 레이아웃에서 매우 중요하다고 할 수 있습니다. 레이아웃 관리자를 사용하면 인터페이스를 더욱 아름답게 만들 수 있습니다.
1. 레이아웃 관리자 소개
레이아웃 관리자는 그래픽 사용자 인터페이스(GUI) 애플리케이션에서 위젯을 자동으로 관리하고 정렬하는 데 사용되는 도구입니다. 레이아웃 관리자를 사용하면 위젯이 다양한 창 크기나 사용자 인터페이스 레이아웃에 적응하여 다양한 화면 크기와 사용자 요구에 더 잘 맞도록 할 수 있습니다.
Qt에서는 개발자가 위젯을 편리하게 구성하고 관리할 수 있도록 다양한 레이아웃 관리자를 제공합니다. 다음은 일반적으로 사용되는 레이아웃 관리자입니다.
1.QVBoxLayout(수직 레이아웃 관리자): 수직 레이아웃 관리자는 위젯을 위에서 아래로 순서대로 배열합니다.
2.QHBoxLayout(가로 레이아웃 관리자): 가로 레이아웃 관리자는 위젯을 왼쪽에서 오른쪽 순서로 정렬합니다.
3.QGridLayout(그리드 레이아웃 관리자): 그리드 레이아웃 관리자는 위젯을 그리드에 배열하며 행과 열을 지정하여 레이아웃을 제어할 수 있습니다.
4.QFormLayout(양식 레이아웃 관리자): 양식 레이아웃 관리자는 레이블과 입력 필드의 조합을 생성하여 하나 또는 두 개의 열로 정렬하는 데 사용됩니다.
5.QStackedLayout(스택 레이아웃 관리자): 스택 레이아웃 관리자는 여러 위젯을 스택 방식으로 배열하여 그 중 하나만 표시하며, 전환을 통해 다양한 위젯을 표시할 수 있습니다.
使用布局管理器的好处是,当窗口大小改变时,布局管理器会自动调整窗口部件的位置和大小,以适应新的大小。这样,开发者无需手动调整每个部件的位置和大小,大大简化了界面设计和窗口调整的工作。
2. QVBoxLayout(수직 레이아웃 관리자)
수직 레이아웃 관리자는 위젯을 위에서 아래로 정렬합니다.
수직 레이아웃 관리자에 위젯을 추가하려면 addWidget() 메소드를 사용하십시오.
addStretch() 메소드를 사용하여 늘이기 항목을 추가하여 위젯의 자동 채우기 및 정렬을 달성할 수 있습니다.
#include <QApplication>
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Vertical Layout Example");
QVBoxLayout layout;
QPushButton *button1 = new QPushButton("Button 1");
QPushButton *button2 = new QPushButton("Button 2");
QPushButton *button3 = new QPushButton("Button 3");
layout.addWidget(button1);
layout.addWidget(button2);
layout.addWidget(button3);
window.setLayout(&layout);
window.show();
return app.exec();
}
3. QHBoxLayout(가로 레이아웃 관리자)
수평 레이아웃 관리자는 위젯을 왼쪽에서 오른쪽으로 순차적으로 정렬합니다.
수평 레이아웃 관리자에 위젯을 추가하려면 addWidget() 메소드를 사용하십시오.
addStretch() 메소드를 사용하여 늘이기 항목을 추가하여 위젯의 자동 채우기 및 정렬을 달성할 수 있습니다.
#include <QApplication>
#include <QWidget>
#include <QHBoxLayout>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Horizontal Layout Example");
QHBoxLayout layout;
QPushButton *button1 = new QPushButton("Button 1");
QPushButton *button2 = new QPushButton("Button 2");
QPushButton *button3 = new QPushButton("Button 3");
layout.addWidget(button1);
layout.addWidget(button2);
layout.addWidget(button3);
window.setLayout(&layout);
window.show();
return app.exec();
}
4. QGridLayout(그리드 레이아웃 관리자)
그리드 레이아웃 관리자는 그리드에 위젯을 배열하며, 행과 열을 지정하여 레이아웃을 제어할 수 있습니다.
그리드 레이아웃 관리자에 위젯을 추가하고 위젯이 위치한 행과 열을 지정하려면 addWidget() 메서드를 사용하세요.
setRowStretch() 및 setColumnStretch() 메서드를 사용하여 행과 열의 늘이기 비율을 설정할 수 있습니다.
#include <QApplication>
#include <QWidget>
#include <QGridLayout>
#include <QPushButton>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Grid Layout Example");
QGridLayout layout;
QPushButton *button1 = new QPushButton("Button 1");
QPushButton *button2 = new QPushButton("Button 2");
QPushButton *button3 = new QPushButton("Button 3");
layout.addWidget(button1, 0, 0);
layout.addWidget(button2, 0, 1);
layout.addWidget(button3, 1, 0);
window.setLayout(&layout);
window.show();
return app.exec();
}
5. QFormLayout(폼 레이아웃 관리자)
양식 레이아웃 관리자는 레이블과 입력 필드의 조합을 생성하여 하나 또는 두 개의 열로 정렬하는 데 사용됩니다.
addRow() 메서드를 사용하여 양식 레이아웃 관리자에 레이블과 입력 필드를 추가합니다.
setLabelAlignment() 메서드를 사용하여 레이블 정렬을 설정할 수 있습니다.
#include <QApplication>
#include <QWidget>
#include <QFormLayout>
#include <QLabel>
#include <QLineEdit>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Form Layout Example");
QFormLayout layout;
QLabel *label1 = new QLabel("Label 1");
QLineEdit *lineEdit1 = new QLineEdit();
QLabel *label2 = new QLabel("Label 2");
QLineEdit *lineEdit2 = new QLineEdit();
layout.addRow(label1, lineEdit1);
layout.addRow(label2, lineEdit2);
window.setLayout(&layout);
window.show();
return app.exec();
}
6. QStackedLayout(스택 레이아웃 관리자)
스택 레이아웃 관리자는 여러 위젯을 스택 방식으로 배열하고 하나의 위젯만 표시합니다.
addWidget() 메서드를 사용하여 스택 레이아웃 관리자에 위젯을 추가합니다.
현재 표시된 위젯 인덱스를 설정하려면 setCurrentIndex() 메서드를 사용하세요.
#include <QApplication>
#include <QWidget>
#include <QStackedLayout>
#include <QPushButton>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QWidget window;
window.setWindowTitle("Stacked Layout Example");
QStackedLayout layout;
QPushButton *button1 = new QPushButton("Button 1");
QLabel *label1 = new QLabel("Label 1");
QPushButton *button2 = new QPushButton("Button 2");
QLabel *label2 = new QLabel("Label 2");
layout.addWidget(button1);
layout.addWidget(label1);
layout.addWidget(button2);
layout.addWidget(label2);
layout.setCurrentIndex(0); // 设置初始显示的部件
window.setLayout(&layout);
window.show();
return app.exec();
}
요약하다
위는 일반적으로 사용되는 5가지 레이아웃 관리자와 해당 코드 예제에 대한 소개입니다. 실제 요구 사항에 따라 적절한 레이아웃 관리자를 선택하고 Qt의 레이아웃 시스템을 사용하여 위젯을 관리 및 배열하여 적응성이 좋은 사용자 인터페이스를 만들 수 있습니다.