QStackedLayout Class

QStackedLayout 클래스는 한 번에 하나의 위젯만 표시되는 위젯 스택을 제공합니다. 더 보기...

Header: #include <QStackedLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속합니다: QLayout

공용 유형

enum StackingMode { StackOne, StackAll }

속성

공용 함수

QStackedLayout()
QStackedLayout(QLayout *parentLayout)
QStackedLayout(QWidget *parent)
virtual ~QStackedLayout()
int addWidget(QWidget *widget)
int currentIndex() const
QWidget *currentWidget() const
int insertWidget(int index, QWidget *widget)
void setStackingMode(QStackedLayout::StackingMode stackingMode)
QStackedLayout::StackingMode stackingMode() const
QWidget *widget(int index) const

재구현된 공용 함수

virtual void addItem(QLayoutItem *item) override
virtual int count() const override
virtual bool hasHeightForWidth() const override
virtual int heightForWidth(int width) const override
virtual QLayoutItem *itemAt(int index) const override
virtual QSize minimumSize() const override
virtual void setGeometry(const QRect &rect) override
virtual QSize sizeHint() const override
virtual QLayoutItem *takeAt(int index) override

공용 슬롯

void setCurrentIndex(int index)
void setCurrentWidget(QWidget *widget)

신호

void currentChanged(int index)
void widgetRemoved(int index)

상세 설명

QStackedLayout은 QTabWidget 에서 제공하는 것과 유사한 사용자 인터페이스를 만드는 데 사용할 수 있습니다. QStackedLayout 위에 편리한 QStackedWidget 클래스도 있습니다.

QStackedLayout은 여러 개의 자식 위젯("페이지")으로 채울 수 있습니다. 예를 들어

    QWidget *firstPageWidget = new QWidget;
    QWidget *secondPageWidget = new QWidget;
    QWidget *thirdPageWidget = new QWidget;

    QStackedLayout *stackedLayout = new QStackedLayout;
    stackedLayout->addWidget(firstPageWidget);
    stackedLayout->addWidget(secondPageWidget);
    stackedLayout->addWidget(thirdPageWidget);

    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addLayout(stackedLayout);
    setLayout(mainLayout);

QStackedLayout은 사용자가 페이지를 전환할 수 있는 본질적인 수단을 제공하지 않습니다. 이는 일반적으로 QStackedLayout의 페이지 제목을 저장하는 QComboBox 또는 QListWidget 을 통해 이루어집니다. 예를 들어

    QComboBox *pageComboBox = new QComboBox;
    pageComboBox->addItem(tr("Page 1"));
    pageComboBox->addItem(tr("Page 2"));
    pageComboBox->addItem(tr("Page 3"));
    connect(pageComboBox, &QComboBox::activated,
            stackedLayout, &QStackedLayout::setCurrentIndex);

레이아웃을 채울 때 위젯은 내부 목록에 추가됩니다. indexOf () 함수는 해당 목록에 있는 위젯의 인덱스를 반환합니다. 위젯은 addWidget() 함수를 사용하여 목록 끝에 추가하거나 insertWidget() 함수를 사용하여 지정된 인덱스에 삽입할 수 있습니다. removeWidget () 함수는 지정된 인덱스의 위젯을 레이아웃에서 제거합니다. 레이아웃에 포함된 위젯의 수는 count() 함수를 사용하여 얻을 수 있습니다.

widget() 함수는 주어진 인덱스 위치에 있는 위젯을 반환합니다. 화면에 표시되는 위젯의 인덱스는 currentIndex()로 지정되며 setCurrentIndex()를 사용하여 변경할 수 있습니다. 비슷한 방식으로 현재 표시된 위젯은 currentWidget() 함수를 사용하여 검색하고 setCurrentWidget() 함수를 사용하여 변경할 수 있습니다.

레이아웃의 현재 위젯이 변경되거나 레이아웃에서 위젯이 제거될 때마다 각각 currentChanged() 및 widgetRemoved() 신호가 전송됩니다.

QStackedWidgetQTabWidget참조하세요 .

멤버 유형 문서

enum QStackedLayout::StackingMode

이 열거형은 레이아웃이 자식 위젯의 가시성과 관련하여 처리하는 방식을 지정합니다.

Constant설명
QStackedLayout::StackOne0현재 위젯만 표시합니다. 이것이 기본값입니다.
QStackedLayout::StackAll1모든 위젯이 표시됩니다. 현재 위젯만 올라갑니다.

속성 문서

[read-only] count : const int

이 속성은 레이아웃에 포함된 위젯의 수를 보유합니다.

액세스 함수:

virtual int count() const override

currentIndex() 및 widget()도 참조하세요 .

currentIndex : int

이 속성은 표시되는 위젯의 인덱스 위치를 보유합니다.

현재 위젯이 없는 경우 현재 인덱스는 -1입니다.

함수에 액세스합니다:

int currentIndex() const
void setCurrentIndex(int index)

알림 신호:

void currentChanged(int index)

currentWidget() 및 indexOf()도 참조하세요 .

stackingMode : StackingMode

는 하위 위젯의 가시성 처리 방식을 결정합니다.

기본값은 StackOne 입니다. 속성을 StackAll 로 설정하면 그래픽 편집기와 같이 다른 위젯 위에 추가 그리기를 수행하는 오버레이 위젯의 레이아웃을 사용할 수 있습니다.

함수에 액세스합니다:

QStackedLayout::StackingMode stackingMode() const
void setStackingMode(QStackedLayout::StackingMode stackingMode)

멤버 함수 문서

QStackedLayout::QStackedLayout()

부모가 없는 QStackedLayout을 구축합니다.

이 QStackedLayout은 나중에 위젯에 설치해야 유효합니다.

addWidget() 및 insertWidget()도 참조하세요 .

[explicit] QStackedLayout::QStackedLayout(QLayout *parentLayout)

새 QStackedLayout을 생성하고 주어진 parentLayout 에 삽입합니다.

[explicit] QStackedLayout::QStackedLayout(QWidget *parent)

주어진 parent 으로 새로운 QStackedLayout을 생성합니다.

이 레이아웃은 parent 위젯에 자체적으로 설치되고 자식들의 지오메트리를 관리합니다.

[virtual noexcept] QStackedLayout::~QStackedLayout()

이것을 파괴합니다 QStackedLayout. 레이아웃의 위젯은 파괴되지 않습니다.

[override virtual] void QStackedLayout::addItem(QLayoutItem *item)

다시 구현합니다: QLayout::addItem(QLayoutItem *항목).

int QStackedLayout::addWidget(QWidget *widget)

주어진 widget 을 이 레이아웃의 끝에 추가하고 widget 의 인덱스 위치를 반환합니다.

이 함수가 호출되기 전에 QStackedLayout 가 비어 있으면 지정된 widget 이 현재 위젯이 됩니다.

insertWidget(), removeWidget(), setCurrentWidget()도 참조하세요 .

[signal] void QStackedLayout::currentChanged(int index)

이 신호는 레이아웃의 현재 위젯이 변경될 때마다 발생합니다. index 은 새로운 현재 위젯의 인덱스를 지정하고, 새 위젯이 없는 경우 -1 을 지정합니다(예: QStackedLayout 에 위젯이 없는 경우).

참고: currentIndex 속성에 대한 알림 신호.

currentWidget() 및 setCurrentWidget()도 참조하세요 .

QWidget *QStackedLayout::currentWidget() const

현재 위젯을 반환하거나, 이 레이아웃에 위젯이 없는 경우 nullptr 을 반환합니다.

currentIndex() 및 setCurrentWidget()도 참조하세요 .

[override virtual] bool QStackedLayout::hasHeightForWidth() const

재구현합니다: QLayoutItem::hasHeightForWidth() const.

[override virtual] int QStackedLayout::heightForWidth(int width) const

재구현합니다: QLayoutItem::heightForWidth(int) const.

int QStackedLayout::insertWidget(int index, QWidget *widget)

QStackedLayout 에 주어진 index 에 주어진 widget 을 삽입합니다. index 가 범위를 벗어나면 위젯이 추가됩니다(이 경우 반환되는 것은 widget 의 실제 인덱스입니다).

이 함수가 호출되기 전에 QStackedLayout 가 비어 있으면 지정된 widget 이 현재 위젯이 됩니다.

현재 인덱스보다 작거나 같은 인덱스에 새 위젯을 삽입하면 현재 인덱스는 증가하지만 현재 위젯은 유지됩니다.

addWidget(), removeWidget(), setCurrentWidget()도 참조하세요 .

[override virtual] QLayoutItem *QStackedLayout::itemAt(int index) const

재구현합니다: QLayout::itemAt(int index) const.

[override virtual] QSize QStackedLayout::minimumSize() const

재구현합니다: QLayout::minimumSize() const.

[slot] void QStackedLayout::setCurrentWidget(QWidget *widget)

현재 위젯을 지정된 widget 로 설정합니다. 새 현재 위젯은 이 스택 레이아웃에 이미 포함되어 있어야 합니다.

setCurrentIndex() 및 currentWidget()도 참조하세요 .

[override virtual] void QStackedLayout::setGeometry(const QRect &rect)

재구현합니다: QLayout::setGeometry(const QRect &r).

[override virtual] QSize QStackedLayout::sizeHint() const

재구현합니다: QLayoutItem::sizeHint() const.

[override virtual] QLayoutItem *QStackedLayout::takeAt(int index)

재구현합니다: QLayout::takeAt(int index).

QWidget *QStackedLayout::widget(int index) const

지정된 위치에 위젯을 반환합니다. index, 지정된 위치에 위젯이 없는 경우 nullptr.

currentWidget() 및 indexOf()도 참조하세요 .

[signal] void QStackedLayout::widgetRemoved(int index)

이 신호는 레이아웃에서 위젯이 제거될 때마다 발생합니다. 위젯의 index 가 파라미터로 전달됩니다.

removeWidget()도 참조하세요 .

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.