Класс QGraphicsLinearLayout
Класс QGraphicsLinearLayout предоставляет горизонтальную или вертикальную компоновку для управления виджетами в представлении графики. Подробнее...
| Заголовок: | #include <QGraphicsLinearLayout> |
| qmake: | QT += widgets |
| С тех пор: | Qt 4.4 |
| Наследуется от: | 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 |
- 10 открытых функций, унаследованных от QGraphicsLayout
- 35 открытых функций, унаследованных от QGraphicsLayoutItem
Дополнительные наследуемые члены
- 1 защищенная функция, унаследованная от QGraphicsLayout
- 3 защищенных функции, унаследованные от QGraphicsLayoutItem
Подробное описание
Класс QGraphicsLinearLayout предоставляет горизонтальную или вертикальную компоновку для управления виджетами в представлении графики.
По умолчанию ориентация линейной компоновки — 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(QGraphicsLayoutItem *parent = nullptr)
Создаёт экземпляр QGraphicsLinearLayout с ориентацией Qt::Horizontal. parent передаётся конструктору QGraphicsLayout.
QGraphicsLinearLayout::QGraphicsLinearLayout(Qt::Orientation orientation, QGraphicsLayoutItem *parent = nullptr)
Создаёт экземпляр QGraphicsLinearLayout. Можно указать ориентацию макета, горизонтальную или вертикальную, через orientation, а 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().
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().
При итерации от 0 и далее, возвращает элементы в визуальном порядке расположения.
qreal QGraphicsLinearLayout::itemSpacing(int index) const
Возвращает отступ после элемента в позиции index.
См. также setItemSpacing().
Qt::Orientation QGraphicsLinearLayout::orientation() const
Возвращает ориентацию макета.
См. также setOrientation().
[override virtual] void QGraphicsLinearLayout::removeAt(int index)
Переопределяет QGraphicsLayout::removeAt().
Удаляет элемент в позиции 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().
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().
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/archives/qt-5.11/qgraphicslinearlayout.html