Класс QGridLayout
Класс QGridLayout размещает виджеты в таблице. Подробнее...
| Заголовок: | #include <QGridLayout> |
| qmake: | QT += widgets |
| Наследует: | QLayout |
Свойства
- horizontalSpacing : int
- verticalSpacing : int
Открытые функции
| QGridLayout() | |
| QGridLayout(QWidget *parent) | |
| virtual | ~QGridLayout() |
| void | addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment()) |
| void | addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
| void | addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
| void | addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment()) |
| void | addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment()) |
| QRect | cellRect(int row, int column) const |
| int | columnCount() const |
| int | columnMinimumWidth(int column) const |
| int | columnStretch(int column) const |
| void | getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const |
| int | horizontalSpacing() const |
| QLayoutItem * | itemAtPosition(int row, int column) const |
| Qt::Corner | originCorner() const |
| int | rowCount() const |
| int | rowMinimumHeight(int row) const |
| int | rowStretch(int row) const |
| void | setColumnMinimumWidth(int column, int minSize) |
| void | setColumnStretch(int column, int stretch) |
| void | setHorizontalSpacing(int spacing) |
| void | setOriginCorner(Qt::Corner corner) |
| void | setRowMinimumHeight(int row, int minSize) |
| void | setRowStretch(int row, int stretch) |
| void | setSpacing(int spacing) |
| void | setVerticalSpacing(int spacing) |
| int | spacing() const |
| int | verticalSpacing() const |
Переопределенные открытые функции
| virtual int | count() const override |
| virtual Qt::Orientations | expandingDirections() const override |
| virtual bool | hasHeightForWidth() const override |
| virtual int | heightForWidth(int w) const override |
| virtual void | invalidate() override |
| virtual QLayoutItem * | itemAt(int index) const override |
| virtual QSize | maximumSize() const override |
| virtual int | minimumHeightForWidth(int w) 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 |
Переопределённые защищённые функции
| virtual void | addItem(QLayoutItem *item) override |
Подробное описание
QGridLayout занимает предоставленное ему пространство (родительским макетом или методом parentWidget()), делит его на строки и столбцы и размещает каждый управляемый им виджет в соответствующей ячейке.
Столбцы и строки ведут себя идентично; мы будем обсуждать столбцы, но существуют аналогичные функции для строк.
Каждый столбец имеет минимальную ширину и коэффициент растяжения. Минимальная ширина — это максимальное значение, заданное с помощью setColumnMinimumWidth(), и минимальная ширина каждого виджета в этом столбце. Коэффициент растяжения задаётся с помощью setColumnStretch() и определяет, сколько места получит столбец сверх своей необходимой минимальной ширины.
Обычно каждый управляемый виджет или макет помещается в отдельную ячейку с помощью addWidget(). Также можно, чтобы виджет занимал несколько ячеек, используя перегрузки addItem() и addWidget() с параметрами для задания диапазона строк и столбцов. В этом случае QGridLayout попытается распределить размер по столбцам/строкам (на основе коэффициентов растяжения).
Чтобы удалить виджет из макета, вызовите removeWidget(). Вызов QWidget::hide() на виджете также эффективно удаляет виджет из макета до тех пор, пока не будет вызван QWidget::show().
Данная иллюстрация показывает фрагмент диалога с сеткой из пяти столбцов и трёх строк (сетка показана пунктирной линией пурпурного цвета):
Столбцы 0, 2 и 4 в этом фрагменте диалога состоят из QLabel, QLineEdit и QListBox. Столбцы 1 и 3 — это области-заполнители, созданные с помощью setColumnMinimumWidth(). Строка 0 состоит из трёх объектов QLabel, строка 1 — из трёх объектов QLineEdit, а строка 2 — из трёх объектов QListBox. Мы использовали столбцы-заполнители (1 и 3), чтобы получить нужное расстояние между столбцами.
Обратите внимание, что столбцы и строки не имеют одинаковой ширины и высоты. Если вы хотите, чтобы два столбца имели одинаковую ширину, вы должны самостоятельно установить их минимальную ширину и коэффициенты растяжения. Для этого используйте setColumnMinimumWidth() и setColumnStretch().
Если QGridLayout не является макетом верхнего уровня (то есть не управляет всей областью виджета и его дочерними элементами), вы должны добавить его в макет родителя, когда вы создаёте его, но до того, как вы что-либо сделаете с ним. Обычный способ добавления макета — вызов addLayout() на родительском макете.
После добавления макета вы можете начать помещать виджеты и другие макеты в ячейки вашего сетчатого макета с помощью addWidget(), addItem() и addLayout().
QGridLayout также включает две ширины отступов: отступ содержимого (contents margin) и расстояние (spacing). Отступ содержимого — это ширина зарезервированного пространства по каждой из четырёх сторон QGridLayout. Расстояние (spacing()) — это ширина автоматически выделенного промежутка между соседними ячейками.
Значения отступа содержимого по умолчанию предоставляются стилем (style). Значение по умолчанию, которое указывают стили Qt, — 9 для дочерних виджетов и 11 для окон. Расстояние по умолчанию такое же, как и ширина отступа для макета верхнего уровня, или такое же, как и для родительского макета.
См. также QBoxLayout, QStackedLayout, Управление макетами и Пример базовых макетов.
Документация свойств
horizontalSpacing : int
Это свойство содержит расстояние между виджетами, расположенными бок о бок.
Если значение не задано явно, горизонтальное расстояние макета наследуется от родительского макета или от настроек стиля родительского виджета.
Это свойство было добавлено в Qt 4.3.
Функции доступа:
| int | horizontalSpacing() const |
| void | setHorizontalSpacing(int spacing) |
См. также verticalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.
verticalSpacing : int
Это свойство содержит расстояние между виджетами, расположенными друг над другом.
Если значение не задано явно, вертикальное расстояние макета наследуется от родительского макета или от настроек стиля родительского виджета.
Это свойство было добавлено в Qt 4.3.
Функции доступа:
| int | verticalSpacing() const |
| void | setVerticalSpacing(int spacing) |
См. также horizontalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.
Документация по членам-функциям
QGridLayout::QGridLayout()
Конструирует новый сетчатый макет.
Вы должны вставить эту сетку в другой макет. Вы можете вставлять виджеты и макеты в этот макет в любое время, но выравнивание не будет выполнено до тех пор, пока это не будет вставлено в другой макет.
QGridLayout::QGridLayout(QWidget *parent)
Конструирует новый QGridLayout с родительским виджетом, parent. Макет изначально имеет одну строку и один столбец и будет расширяться при вставке новых элементов.
[virtual] QGridLayout::~QGridLayout()
Удаляет сетчатый макет. Управление геометрией завершается, если это сетка верхнего уровня.
Виджеты макета не удаляются.
void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = Qt::Alignment())
Добавляет item в позицию row, column, занимая rowSpan строк и columnSpan столбцов и выравнивая его согласно alignment. Если rowSpan и/или columnSpan равно -1, то элемент будет расширяться до нижнего и/или правого края соответственно. Макет принимает владение item.
Предупреждение: Не используйте эту функцию для добавления дочерних макетов или дочерних виджетов. Используйте addLayout() или addWidget() вместо этого.
[override virtual protected] void QGridLayout::addItem(QLayoutItem *item)
Переопределяет: QLayout::addItem(QLayoutItem *item).
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Помещает layout в позицию (row, column) в сетке. Верхняя левая позиция — (0, 0).
Выравнивание задаётся параметром alignment. Значение по умолчанию — 0, что означает, что виджет заполняет всю ячейку.
Неравное нулю выравнивание указывает, что макет не должен расширяться, чтобы заполнить доступное пространство, а должен иметь размер согласно sizeHint().
layout становится дочерним элементом сетчатого макета.
void QGridLayout::addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Это перегруженная функция.
Этот вариант добавляет макет layout в ячейку сетки, занимающую несколько строк/столбцов. Ячейка начнётся с row, column, занимая rowSpan строк и columnSpan столбцов.
Если rowSpan и/или columnSpan равно -1, то макет будет расширяться до нижнего и/или правого края соответственно.
void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = Qt::Alignment())
Добавляет заданный widget в ячейку сетки в row, column. Верхняя левая позиция по умолчанию (0, 0).
Выравнивание задаётся параметром alignment. Значение по умолчанию — 0, что означает, что виджет заполняет всю ячейку.
void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = Qt::Alignment())
Это перегруженная функция.
Этот вариант добавляет заданный widget в ячейку сетки, занимающую несколько строк/столбцов. Ячейка начнётся с fromRow, fromColumn, занимая rowSpan строк и columnSpan столбцов. widget будет иметь заданное alignment.
Если rowSpan и/или columnSpan равно -1, то виджет будет расширяться до нижнего и/или правого края соответственно.
QRect QGridLayout::cellRect(int row, int column) const
Возвращает геометрию ячейки со строкой row и столбцом column в сетке. Возвращает недействительный прямоугольник, если row или column находятся вне сетки.
Предупреждение: в текущей версии Qt эта функция не возвращает корректные результаты до тех пор, пока не будет вызван setGeometry(), т.е. после того, как parentWidget() стал видимым.
int QGridLayout::columnCount() const
Возвращает количество столбцов в этой сетке.
int QGridLayout::columnMinimumWidth(int column) const
Возвращает расстояние между столбцами для столбца column.
См. также setColumnMinimumWidth().
int QGridLayout::columnStretch(int column) const
Возвращает коэффициент растяжения для столбца column.
См. также setColumnStretch().
[override virtual] int QGridLayout::count() const
Переопределяет: QLayout::count() const.
[override virtual] Qt::Orientations QGridLayout::expandingDirections() const
Реализует: QLayout::expandingDirections() const.
void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
Возвращает информацию о позиции элемента с заданным index.
Переменные, переданные в качестве row и column, обновляются положением элемента в макете, а переменные rowSpan и columnSpan обновляются вертикальным и горизонтальным интервалом элемента.
См. также itemAtPosition() и itemAt().
[override virtual] bool QGridLayout::hasHeightForWidth() const
Реализует: QLayoutItem::hasHeightForWidth() const.
[override virtual] int QGridLayout::heightForWidth(int w) const
Реализует: QLayoutItem::heightForWidth(int ) const.
[override virtual] void QGridLayout::invalidate()
Реализует: QLayout::invalidate().
[override virtual] QLayoutItem *QGridLayout::itemAt(int index) const
Реализует: QLayout::itemAt(int index) const.
QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const
Возвращает элемент макета, занимающий ячейку (row, column), или nullptr , если ячейка пустая.
Эта функция была добавлена в Qt 4.4.
См. также getItemPosition() и indexOf().
[override virtual] QSize QGridLayout::maximumSize() const
Реализует: QLayout::maximumSize() const.
[override virtual] int QGridLayout::minimumHeightForWidth(int w) const
Реализует: QLayoutItem::minimumHeightForWidth(int w) const.
[override virtual] QSize QGridLayout::minimumSize() const
Реализует: QLayout::minimumSize() const.
Qt::Corner QGridLayout::originCorner() const
Возвращает угол, используемый для начала сетки, т. е. для позиции (0, 0).
См. также setOriginCorner().
int QGridLayout::rowCount() const
Возвращает количество строк в этой сетке.
int QGridLayout::rowMinimumHeight(int row) const
Возвращает минимальную высоту, заданную для строки row.
См. также setRowMinimumHeight().
int QGridLayout::rowStretch(int row) const
Возвращает коэффициент растяжения для строки row.
См. также setRowStretch().
void QGridLayout::setColumnMinimumWidth(int column, int minSize)
Устанавливает минимальную ширину столбца column в minSize пикселей.
См. также columnMinimumWidth() и setRowMinimumHeight().
void QGridLayout::setColumnStretch(int column, int stretch)
Устанавливает коэффициент растяжения столбца column в stretch. Первый столбец имеет номер 0.
Коэффициент растяжения относится к другим столбцам в этой сетке. Столбцы с более высоким коэффициентом растяжения занимают больше места.
Значение по умолчанию для коэффициента растяжения равно 0. Если коэффициент растяжения равен 0, и ни один другой столбец в этой таблице не может увеличиваться, столбец всё равно может увеличиваться.
Альтернативный подход заключается в добавлении отступов с помощью addItem() с помощью QSpacerItem.
См. также columnStretch() и setRowStretch().
[override virtual] void QGridLayout::setGeometry(const QRect &rect)
Реализует: QLayout::setGeometry(const QRect &r).
void QGridLayout::setOriginCorner(Qt::Corner corner)
Устанавливает угол начала сетки, т. е. позицию (0, 0), в corner.
См. также originCorner().
void QGridLayout::setRowMinimumHeight(int row, int minSize)
Устанавливает минимальную высоту строки row в minSize пикселей.
См. также rowMinimumHeight() и setColumnMinimumWidth().
void QGridLayout::setRowStretch(int row, int stretch)
Устанавливает коэффициент растяжения строки row в stretch. Первая строка имеет номер 0.
Коэффициент растяжения относится к другим строкам в этой сетке. Строки с более высоким коэффициентом растяжения занимают больше места.
Значение по умолчанию для коэффициента растяжения равно 0. Если коэффициент растяжения равен 0, и ни одна другая строка в этой таблице не может увеличиваться, строка всё равно может увеличиваться.
См. также rowStretch(), setRowMinimumHeight() и setColumnStretch().
void QGridLayout::setSpacing(int spacing)
Эта функция устанавливает вертикальный и горизонтальный отступ в spacing.
См. также spacing(), setVerticalSpacing() и setHorizontalSpacing().
[override virtual] QSize QGridLayout::sizeHint() const
Реализует: QLayoutItem::sizeHint() const.
int QGridLayout::spacing() const
Если вертикальный отступ равен горизонтальному отступу, эта функция возвращает это значение; в противном случае она возвращает -1.
См. также setSpacing(), verticalSpacing() и horizontalSpacing().
[override virtual] QLayoutItem *QGridLayout::takeAt(int index)
Реализует: QLayout::takeAt(int index).
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qgridlayout.html