Класс QGridLayout
Класс QGridLayout выстраивает виджеты в сетку. Подробнее...
| Заголовок: | #include <QGridLayout> |
| qmake: | QT += widgets |
| Наследуется от: | QLayout |
Свойства
- horizontalSpacing : int
- verticalSpacing : int
Открытые функции
| QGridLayout(QWidget *parent) | |
| QGridLayout() | |
| virtual | ~QGridLayout() |
| void | addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = ...) |
| void | addLayout(QLayout *layout, int row, int column, Qt::Alignment alignment = ...) |
| void | addLayout(QLayout *layout, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment = ...) |
| void | addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = ...) |
| void | addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment 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 |
- 37 открытых функций унаследовано от QLayout
- 31 открытая функция унаследовано от QObject
- 17 открытых функций унаследовано от QLayoutItem
Статические открытые члены
| const QMetaObject | staticMetaObject |
- 1 статический открытый член унаследован от QLayout
- 9 статических открытых членов унаследовано от QObject
Переопределённые защищённые функции
| virtual void | addItem(QLayoutItem *item) override |
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследованы от QObject
- 4 защищённых функции унаследованы от QLayout
- 9 защищённых функций унаследованы от QObject
Подробное описание
Класс QGridLayout выкладывает виджеты в сетку.
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 также включает две ширины отступа: отступ содержимого и расстояние. Отступ содержимого — это ширина зарезервированного пространства по каждой из четырёх сторон QGridLayout. Расстояние() — это ширина автоматически выделенного отступа между соседними блоками.
Значения отступа содержимого по умолчанию предоставляются стилем 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(QWidget *parent)
Конструирует новый QGridLayout с родительским виджетом parent. Макет изначально имеет одну строку и один столбец и будет расширяться при вставке новых элементов.
QGridLayout::QGridLayout()
Конструирует новый макет сетки.
Вы должны вставить эту сетку в другой макет. Вы можете вставлять виджеты и макеты в этот макет в любое время, но вычисление размеров не будет выполнено до тех пор, пока эта сетка не будет вставлена в другой макет.
[virtual] QGridLayout::~QGridLayout()
Уничтожает макет сетки. Управление геометрией прекращается, если это макет верхнего уровня.
Виджеты макета не уничтожаются.
void QGridLayout::addItem(QLayoutItem *item, int row, int column, int rowSpan = 1, int columnSpan = 1, Qt::Alignment alignment = ...)
Добавляет item в позицию row, column, занимающую rowSpan строк и columnSpan столбцов, и выравнивает его в соответствии с alignment. Если rowSpan и/или columnSpan равно -1, то элемент будет расширяться до нижнего и/или правого края соответственно. Макет принимает во владение item.
Предупреждение: Не используйте эту функцию для добавления дочерних макетов или элементов дочерних виджетов. Используйте addLayout() или addWidget() вместо этого.
[override virtual protected] void QGridLayout::addItem(QLayoutItem *item)
Переопределено из QLayout::addItem().
void QGridLayout::addLayout(QLayout *layout, int row, int column, Qt::Alignment 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 = ...)
Это перегруженная функция.
Этот вариант добавляет макет layout в сетку ячеек, занимая несколько строк/столбцов. Ячейка начнётся с row, column, занимая rowSpan строк и columnSpan столбцов.
Если rowSpan и/или columnSpan равно -1, то макет будет расширяться до нижнего и/или правого края соответственно.
void QGridLayout::addWidget(QWidget *widget, int row, int column, Qt::Alignment alignment = ...)
Добавляет указанный widget в сетку ячеек в row, column. Левый верхний угол — (0, 0) по умолчанию.
Выравнивание задаётся параметром alignment. Значение по умолчанию 0, что означает заполнение виджетом всей ячейки.
void QGridLayout::addWidget(QWidget *widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment 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().
[override virtual] Qt::Orientations QGridLayout::expandingDirections() const
Переопределено из QLayout::expandingDirections().
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().
[override virtual] int QGridLayout::heightForWidth(int w) const
Переопределено из QLayoutItem::heightForWidth().
[override virtual] void QGridLayout::invalidate()
Переопределено из QLayout::invalidate().
[override virtual] QLayoutItem *QGridLayout::itemAt(int index) const
Переопределено из QLayout::itemAt().
QLayoutItem *QGridLayout::itemAtPosition(int row, int column) const
Возвращает элемент макета, занимающий ячейку (row, column), или 0, если ячейка пуста.
Эта функция была введена в Qt 4.4.
См. также getItemPosition() и indexOf().
[override virtual] QSize QGridLayout::maximumSize() const
Переопределено из QLayout::maximumSize().
[override virtual] int QGridLayout::minimumHeightForWidth(int w) const
Переопределено из QLayoutItem::minimumHeightForWidth().
[override virtual] QSize QGridLayout::minimumSize() const
Переопределено из QLayout::minimumSize().
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().
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().
int QGridLayout::spacing() const
Если вертикальный отступ равен горизонтальному отступу, эта функция возвращает это значение; иначе возвращает -1.
См. также setSpacing(), verticalSpacing() и horizontalSpacing().
[override virtual] QLayoutItem *QGridLayout::takeAt(int index)
Переопределено из QLayout::takeAt().
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qgridlayout.html