Spec-Zone.ru › Qt 6.1

Класс QGraphicsLinearLayout

Класс QGraphicsLinearLayout предоставляет горизонтальную или вертикальную компоновку для управления виджетами в представлении графики. Подробнее...

Заголовок: #include <QGraphicsLinearLayout>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследуется от: QGraphicsLayout
  • Список всех членов, включая унаследованные

Открытые функции

QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)
QGraphicsLinearLayout(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.

Наиболее распространенный способ использования QGraphicsLinearLayout — создание объекта в куче без родителя, добавление виджетов и компоновок с помощью вызова addItem(), и, наконец, присвоение компоновки виджету, вызвав QGraphicsWidget::setLayout().

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

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

QGraphicsWidget *form = new QGraphicsWidget;
form->setLayout(layout);
scene.addItem(form);

Вы можете добавлять виджеты, компоновки, отступы (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, но в отличие от этих классов, он используется для управления QGraphicsWidget и QGraphicsLayout вместо QWidget и QLayout.

См. также QGraphicsGridLayout и QGraphicsWidget.

Документация по функциям-членам

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

Создает экземпляр QGraphicsLinearLayout. Вы можете передать orientation для компоновки, либо горизонтальную, либо вертикальную, и parent передается в конструктор QGraphicsLayout.

QGraphicsLinearLayout::QGraphicsLinearLayout(QGraphicsLayoutItem *parent = nullptr)

Создаёт экземпляр QGraphicsLinearLayout с ориентацией Qt::Horizontal. parent передаётся в конструктор QGraphicsLayout.

[virtual] 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)

Вставляет item в макет по индексу index или перед элементом, который находится в данный момент по индексу index.

См. также addItem(), itemAt(), insertStretch(), и setItemSpacing().

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

Вставляет растяжку размером stretch по индексу index или перед элементом, который находится в данный момент по индексу 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().

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qgraphicslinearlayout.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API