QGraphicsLinearLayout Class

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

Header: #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 ()를 호출하거나 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은 QVBoxLayoutQHBoxLayout 과 매우 유사하지만, 이러한 클래스와 달리 QWidgetQLayout 대신 QGraphicsWidgetQGraphicsLayout 을 관리하는 데 사용됩니다.

QGraphicsGridLayoutQGraphicsWidget도 참조하십시오 .

멤버 함수 문서

QGraphicsLinearLayout::QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)

Qt::Horizontal 오리엔테이션을 사용하여 QGraphicsLinearLayout 인스턴스를 생성합니다. parentQGraphicsLayout 의 생성자에 전달됩니다.

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

QGraphicsLinearLayout 인스턴스를 생성합니다. 레이아웃에 가로 또는 세로로 orientation 을 전달할 수 있으며, parentQGraphicsLayout 의 생성자에 전달됩니다.

[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 의 레이아웃에 item 을 삽입하거나 현재 index 에 있는 항목 앞에 삽입합니다.

addItem(), itemAt(), insertStretch() 및 setItemSpacing()도 참조하세요 .

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

indexstretch 을 삽입하거나 현재 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 어느, const QSizeF &constraint) const.

qreal QGraphicsLinearLayout::spacing() const

레이아웃의 간격을 반환합니다. 간격은 항목 사이의 수직 및 수평 거리를 나타냅니다.

setSpacing()도 참조하세요 .

int QGraphicsLinearLayout::stretchFactor(QGraphicsLayoutItem *item) const

item 에 대한 스트레치 계수를 반환합니다. 기본 스트레치 계수는 0으로, 항목에 할당된 스트레치 계수가 없음을 의미합니다.

setStretchFactor()도 참조하세요 .

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