QStackedLayout Class
QStackedLayout 클래스는 한 번에 하나의 위젯만 표시되는 위젯 스택을 제공합니다. 더 보기...
| 헤더: | #include <QStackedLayout> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Widgets) target_link_libraries(mytarget PRIVATE Qt6::Widgets) |
| qmake: | QT += widgets |
| 상속: | QLayout |
공개 유형
| enum | StackingMode { StackOne, StackAll } |
속성
- count : int
- currentIndex : int
- stackingMode : StackingMode
공개 함수
| 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) |
(since 6.9) void | widgetAdded(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() 신호가 발생합니다.
QStackedWidget 및 QTabWidget항목도 참조하십시오 .
멤버 유형 문서
enum QStackedLayout::StackingMode
이 열거형은 레이아웃이 자식 위젯의 표시 여부를 어떻게 처리할지 지정합니다.
| 상수 | 값 | 설명 |
|---|---|---|
QStackedLayout::StackOne | 0 | 현재 위젯만 표시됩니다. 이것이 기본값입니다. |
QStackedLayout::StackAll | 1 | 모든 위젯이 표시됩니다. 현재 위젯은 단순히 위로 올라와 있을 뿐입니다. |
속성 설명
[read-only] count : int
이 속성은 레이아웃에 포함된 위젯의 개수를 나타냅니다.
액세스 함수:
| virtual int | count() const override |
currentIndex() 및 widget()도 참조하십시오 .
currentIndex : int
이 속성은 현재 표시 중인 위젯의 인덱스 위치를 저장합니다.
현재 위젯이 없는 경우 현재 인덱스는 -1입니다.
액세스 함수:
| int | currentIndex() const |
| void | setCurrentIndex(int index) |
Notifier 신호:
| 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 *item)을 재구현합니다.
int QStackedLayout::addWidget(QWidget *widget)
지정된 widget 를 이 레이아웃의 끝에 추가하고, widget 의 인덱스 위치를 반환합니다.
이 함수가 호출되기 전에 ` QStackedLayout `가 비어 있는 경우, 지정된 ` widget `가 현재 위젯이 됩니다.
insertWidget(), removeWidget() 및 setCurrentWidget()도 참조하십시오 .
[signal] void QStackedLayout::currentChanged(int index)
이 신호는 레이아웃 내의 현재 위젯이 변경될 때마다 발생합니다. ` index `는 새로운 현재 위젯의 인덱스를 나타내며, 새로운 위젯이 없는 경우(예: ` QStackedLayout`에 위젯이 없는 경우)에는 -1을 반환합니다.
참고: ` 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, since 6.9] void QStackedLayout::widgetAdded(int index)
이 신호는 위젯이 추가되거나 삽입될 때마다 발생합니다. 위젯의 ` index `가 매개변수로 전달됩니다.
이 함수는 Qt 6.9에서 도입되었습니다.
addWidget() 및 insertWidget()도 참조하십시오 .
[signal] void QStackedLayout::widgetRemoved(int index)
이 신호는 레이아웃에서 위젯이 제거될 때마다 발생합니다. 위젯의 ` index `가 매개변수로 전달됩니다.
removeWidget()도 참조하십시오 .
© 2026 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.