이 페이지에서

QGraphicsLinearLayout Class

QGraphicsLinearLayout 클래스는 Graphics View에서 위젯을 관리하기 위한 가로 또는 세로 레이아웃을 제공합니다. 더 보기...

헤더: #include <QGraphicsLinearLayout>
CMake: find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
상속: QGraphicsLayout

공개 함수

QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)
QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)
virtual ~QGraphicsLinearLayout()
void addItem(QGraphicsLayoutItem *item)
void addStretch(int stretch = 1)
Qt::Alignment alignment(QGraphicsLayoutItem *item) const
void insertItem(int index, QGraphicsLayoutItem *item)
void insertStretch(int index, int stretch = 1)
qreal itemSpacing(int index) const
Qt::Orientation orientation() const
void removeItem(QGraphicsLayoutItem *item)
void setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)
void setItemSpacing(int index, qreal spacing)
void setOrientation(Qt::Orientation orientation)
void setSpacing(qreal spacing)
void setStretchFactor(QGraphicsLayoutItem *item, int stretch)
qreal spacing() const
int stretchFactor(QGraphicsLayoutItem *item) const

재구현된 공용 함수

virtual int count() const override
virtual void invalidate() override
virtual QGraphicsLayoutItem *itemAt(int index) const override
virtual void removeAt(int index) override
virtual void setGeometry(const QRectF &rect) override
virtual QSizeF sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const override

상세 설명

선형 레이아웃의 기본 방향은 가로 방향 Qt::Horizontal 입니다. 세로 방향을 선택하려면 ` setOrientation()`를 호출하거나, QGraphicsLinearLayout의 생성자에 ` Qt::Vertical `를 전달하면 됩니다.

QGraphicsLinearLayout을 사용하는 가장 일반적인 방법은 힙에 객체를 생성하고, 생성자에 부모 위젯을 전달한 다음, addItem()를 호출하여 위젯과 레이아웃을 추가하는 것입니다.

QGraphicsScene scene;
QGraphicsWidget *textEdit = scene.addWidget(new QTextEdit);
QGraphicsWidget *pushButton = scene.addWidget(new QPushButton);

QGraphicsWidget *form = new QGraphicsWidget;
scene.addItem(form);

QGraphicsLinearLayout *layout = new QGraphicsLinearLayout(form);
layout->addItem(textEdit);
layout->addItem(pushButton);

반대로, 레이아웃의 생성자에 부모 위젯을 전달하지 않는 경우, QGraphicsWidget::setLayout()를 호출하여 이 레이아웃을 해당 위젯의 최상위 레이아웃으로 설정해야 하며, 그러면 위젯이 레이아웃에 대한 소유권을 갖게 됩니다.

선형 레이아웃에는 위젯, 레이아웃, 스트레치(addStretch(), insertStretch() 또는 setStretchFactor()) 및 스페이싱(setItemSpacing())을 추가할 수 있습니다. 레이아웃은 항목에 대한 소유권을 갖습니다. 레이아웃 항목이 QGraphicsItem 을 상속받는 경우(예: QGraphicsWidget), 레이아웃 항목이 두 개의 소유권 계층 구조에 속하게 되어 소유권에 모호성이 발생할 수 있습니다. 이를 처리하는 방법은 QGraphicsLayoutItem::setOwnedByLayout() 문서를 참조하십시오. count() 및 itemAt()를 호출하여 레이아웃 내의 각 항목에 접근할 수 있습니다. removeAt() 또는 removeItem()를 호출하면 항목을 파괴하지 않고 레이아웃에서 제거할 수 있습니다.

QGraphicsLinearLayout의 크기 힌트 및 크기 정책

QGraphicsLinearLayout은 각 항목의 크기 힌트와 크기 정책을 준수하며, 레이아웃에 항목들이 채울 수 있는 공간보다 더 많은 공간이 있을 경우 각 항목은 해당 항목에 대한 레이아웃의 정렬 방식에 따라 배열됩니다. setAlignment()를 호출하여 각 항목의 정렬 방식을 설정할 수 있으며, alignment()를 호출하여 항목의 정렬 상태를 확인할 수 있습니다. 기본적으로 항목은 왼쪽 상단에 정렬됩니다.

QGraphicsLinearLayout 내의 간격

레이아웃은 항목들 사이에 일정한 간격을 배분합니다. 실제 간격의 크기는 관리되는 위젯의 현재 스타일에 따라 다르지만, 일반적인 간격은 4입니다. 또한 setSpacing()를 호출하여 사용자 정의 간격을 설정할 수 있으며, spacing()를 호출하여 현재 간격 값을 얻을 수 있습니다. 항목별로 개별 간격을 구성하려면 setItemSpacing()를 호출하면 됩니다.

QGraphicsLinearLayout의 스트레치 계수

각 항목에 스트레치 팩터를 할당하여 다른 항목에 비해 해당 항목이 차지할 공간을 조절할 수 있습니다. 기본적으로 선형 레이아웃에 배열된 두 개의 동일한 위젯은 크기가 같지만, 첫 번째 위젯의 스트레치 계수가 1이고 두 번째 위젯의 스트레치 계수가 2인 경우, 첫 번째 위젯은 사용 가능한 공간의 1/3을, 두 번째 위젯은 2/3를 차지하게 됩니다.

QGraphicsLinearLayout은 모든 항목의 스트레치 계수를 합산한 후, 그에 따라 사용 가능한 공간을 분배하여 크기를 계산합니다. 모든 항목의 기본 스트레치 계수는 0입니다. 계수 0은 해당 항목에 정의된 스트레치 계수가 없음을 의미하며, 사실상 스트레치 계수를 1로 설정하는 것과 동일합니다. 스트레치 계수는 레이아웃의 세로 방향(방향에 따라)에 있는 사용 가능한 공간에만 적용됩니다. 항목의 가로 및 세로 방향 스트레치를 모두 제어하려면 대신 QGraphicsGridLayout 를 사용할 수 있습니다.

QGraphicsLinearLayout과 다른 레이아웃의 비교

QGraphicsLinearLayout은 QVBoxLayout 및 QHBoxLayout 과 매우 유사하지만, 이 클래스들과는 달리 QWidget 및 QLayout 대신 QGraphicsWidget 및 QGraphicsLayout 을 관리하는 데 사용됩니다.

QGraphicsGridLayout 및 QGraphicsWidget도 참조하십시오 .

멤버 함수 문서

QGraphicsLinearLayout::QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)

Qt::Horizontal 방향 설정을 사용하여 QGraphicsLinearLayout 인스턴스를 생성합니다. parent 는 QGraphicsLayout 의 생성자에 전달됩니다.

QGraphicsLinearLayout::QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)

QGraphicsLinearLayout 인스턴스를 생성합니다. 레이아웃의 방향( orientation )으로 수평(horizontal) 또는 수직(vertical)을 전달할 수 있으며, ` parent `는 ` QGraphicsLayout`의 생성자에 전달됩니다.

[virtual noexcept] QGraphicsLinearLayout::~QGraphicsLinearLayout()

QGraphicsLinearLayout 객체를 삭제합니다.

void QGraphicsLinearLayout::addItem(QGraphicsLayoutItem *item)

이 편의 함수는 ` insertItem(-1, item)`를 호출하는 것과 동일합니다.

void QGraphicsLinearLayout::addStretch(int stretch = 1)

이 편의 함수는 ` insertStretch(-1, stretch)`를 호출하는 것과 동일합니다.

Qt::Alignment QGraphicsLinearLayout::alignment(QGraphicsLayoutItem *item) const

item 의 정렬 방식을 반환합니다. 기본 정렬 방식은 Qt::AlignTop | Qt::AlignLeft 입니다.

이 정렬 방식은 레이아웃에 위젯이 차지할 수 있는 공간보다 더 많은 공간이 남아 있는 경우, 해당 항목이 할당된 공간 내에서 어떻게 배치될지를 결정합니다.

setAlignment()도 참조하십시오 .

[override virtual] int QGraphicsLinearLayout::count() const

QGraphicsLayout::count() const를 재구현합니다.

void QGraphicsLinearLayout::insertItem(int index, QGraphicsLayoutItem *item)

index 의 레이아웃이나, 현재 index 에 있는 항목 중 그 앞에 item 를 삽입합니다.

addItem(), itemAt(), insertStretch() 및 setItemSpacing()도 참조하십시오 .

void QGraphicsLinearLayout::insertStretch(int index, int stretch = 1)

index 에 있는 stretch 의 일부를 삽입하거나, 현재 index 에 있는 항목 중 어느 것 앞에 삽입합니다.

addStretch(), setStretchFactor(), setItemSpacing() 및 insertItem()도 참조하십시오 .

[override virtual] void QGraphicsLinearLayout::invalidate()

QGraphicsLayout::invalidate()을 재구현합니다.

[override virtual] QGraphicsLayoutItem *QGraphicsLinearLayout::itemAt(int index) const

QGraphicsLayout::itemAt(int i) const를 재구현합니다.

0부터 순차적으로 반복할 때, 시각적으로 정렬된 순서대로 항목을 반환합니다.

qreal QGraphicsLinearLayout::itemSpacing(int index) const

index 에서 항목 뒤의 간격을 반환합니다.

setItemSpacing()도 참조하십시오 .

Qt::Orientation QGraphicsLinearLayout::orientation() const

레이아웃 방향을 반환합니다.

setOrientation()도 참조하십시오 .

[override virtual] void QGraphicsLinearLayout::removeAt(int index)

QGraphicsLayout::removeAt(int index)를 재구현합니다.

index 에 있는 항목을 파괴하지 않고 제거합니다. 항목의 소유권은 호출자에게 이전됩니다.

removeItem() 및 insertItem()도 참조하십시오 .

void QGraphicsLinearLayout::removeItem(QGraphicsLayoutItem *item)

item 를 레이아웃에서 제거하되, 레이아웃 자체는 파괴하지 않습니다. item 의 소유권이 호출자에게 이전됩니다.

removeAt() 및 insertItem()도 참조하십시오 .

void QGraphicsLinearLayout::setAlignment(QGraphicsLayoutItem *item, Qt::Alignment alignment)

item 의 정렬을 alignment 로 설정합니다. item 의 정렬이 변경되면 레이아웃이 자동으로 무효화됩니다.

alignment() 및 invalidate()도 참조하십시오 .

[override virtual] void QGraphicsLinearLayout::setGeometry(const QRectF &rect)

QGraphicsLayoutItem::setGeometry(const QRectF &rect)를 재구현합니다.

void QGraphicsLinearLayout::setItemSpacing(int index, qreal spacing)

index 에서 항목 뒤의 간격을 spacing 로 설정합니다.

itemSpacing()도 참조하십시오 .

void QGraphicsLinearLayout::setOrientation(Qt::Orientation orientation)

레이아웃 방향을 orientation 로 변경하십시오. 레이아웃 방향을 변경하면 레이아웃이 자동으로 무효화됩니다.

orientation()도 참조하십시오 .

void QGraphicsLinearLayout::setSpacing(qreal spacing)

레이아웃의 간격을 spacing 로 설정합니다. 간격이란 항목들 사이의 수직 및 수평 거리를 의미합니다.

spacing(), setItemSpacing(), setStretchFactor(), QGraphicsGridLayout::setSpacing()도 참조하십시오 .

void QGraphicsLinearLayout::setStretchFactor(QGraphicsLayoutItem *item, int stretch)

item 의 스트레치 계수를 stretch 로 설정합니다. 항목의 스트레치 계수가 변경되면 이 함수는 레이아웃을 무효화합니다.

stretch 을 0으로 설정하면 항목에서 스트레치 계수가 제거되며, 이는 사실상 stretch 을 1로 설정하는 것과 동일합니다.

stretchFactor()도 참조하십시오 .

[override virtual] QSizeF QGraphicsLinearLayout::sizeHint(Qt::SizeHint which, const QSizeF &constraint = QSizeF()) const

QGraphicsLayoutItem::sizeHint(Qt::SizeHint which, const QSizeF &constraint) const를 재구현합니다.

qreal QGraphicsLinearLayout::spacing() const

레이아웃의 간격을 반환합니다. 간격이란 항목들 사이의 수직 및 수평 거리를 의미합니다.

setSpacing()도 참조하십시오 .

int QGraphicsLinearLayout::stretchFactor(QGraphicsLayoutItem *item) const

item 의 스트레치 계수를 반환합니다. 기본 스트레치 계수는 0이며, 이는 해당 항목에 스트레치 계수가 지정되지 않았음을 의미합니다.

setStretchFactor()도 참조하십시오 .

© 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.