QT 기본 튜토리얼(레이아웃 관리자)


머리말

이번 글에서는 레이아웃 관리자의 사용법에 대해 설명하겠습니다. 레이아웃 관리자는 인터페이스 레이아웃에서 매우 중요하다고 할 수 있습니다. 레이아웃 관리자를 사용하면 인터페이스를 더욱 아름답게 만들 수 있습니다.

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의 레이아웃 시스템을 사용하여 위젯을 관리 및 배열하여 적응성이 좋은 사용자 인터페이스를 만들 수 있습니다.

추천

출처blog.csdn.net/m0_49476241/article/details/132950661