Класс 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 |
- 36 открытых функций унаследовано от QLayout
- 34 открытых функции унаследовано от QObject
- 17 открытых функций унаследовано от QLayoutItem
Переопределённые защищённые функции
| virtual void | addItem(QLayoutItem *item) override |
Дополнительные унаследованные члены
- 1 открытый слот унаследован от QObject
- 2 сигнала унаследованы от QObject
- 1 открытая переменная унаследована от QObject
- 1 статический открытый член унаследован от QLayout
- 10 статических открытых членов унаследованы от QObject
- 4 защищённых функций унаследовано от QLayout
- 9 защищённых функций унаследовано от QObject
- 2 защищённых переменных унаследованы от 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. Расстояние() — это ширина автоматически выделенного расстояния между соседними ячейками.
Значения отступов содержимого по умолчанию предоставляются стилем. Значение по умолчанию, указанное стилями 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, что означает, что виджет заполняет всю ячейку.
Не нулевое значение alignment указывает, что компоновка не должна расширяться, чтобы заполнить доступное пространство, а должна быть размером согласно 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 столбцов. Виджет будет иметь заданное 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/archives/qt-5.11/qgridlayout.html