Класс QGridLayout
Класс QGridLayout размещает виджеты в сетке. Подробнее...
| Заголовок: | #include <QGridLayout> |
| qmake: | QT += widgets |
| Наследует: | QLayout |
Свойства
- horizontalSpacing : int
- verticalSpacing : int
Открытые функции
| QGridLayout(QWidget *parent) | |
| QGridLayout() | |
| ~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 |
| virtual Qt::Orientations | expandingDirections() const |
| virtual bool | hasHeightForWidth() const |
| virtual int | heightForWidth(int w) const |
| virtual void | invalidate() |
| virtual QLayoutItem * | itemAt(int index) const |
| virtual QSize | maximumSize() const |
| virtual int | minimumHeightForWidth(int w) const |
| virtual QSize | minimumSize() const |
| virtual void | setGeometry(const QRect &rect) |
| virtual QSize | sizeHint() const |
| virtual QLayoutItem * | takeAt(int index) |
- 36 общедоступных функций, унаследованных от QLayout
- 31 общедоступных функций, унаследованных от QObject
- 17 общедоступных функций, унаследованных от QLayoutItem
Реализованные защищённые функции
| virtual void | addItem(QLayoutItem *item) |
Дополнительные унаследованные члены
- 1 общедоступный слот, унаследованный от QObject
- 2 сигнала, унаследованные от QObject
- 1 статический общедоступный член, унаследованный от QLayout
- 11 статических общедоступных членов, унаследованных от QObject
- 4 защищённых функций, унаследованных от QLayout
- 9 защищённых функций, унаследованных от QObject
Подробное описание
Класс QGridLayout размещает виджеты в сетке.
QGridLayout занимает предоставленное ему пространство (родительским макетом или методом parentWidget()), разбивает его на строки и столбцы и помещает каждый управляемый им виджет в соответствующую ячейку.
Столбцы и строки ведут себя одинаково; мы будем обсуждать столбцы, но существуют эквивалентные функции для строк.
Каждый столбец имеет минимальную ширину и коэффициент растяжения. Минимальная ширина — это максимальное значение, установленное с помощью setColumnMinimumWidth() и минимальной ширины каждого виджета в этом столбце. Коэффициент растяжения устанавливается с помощью setColumnStretch() и определяет, какую часть доступного пространства получит столбец сверх его необходимой минимальной ширины.
Обычно каждый управляемый виджет или макет помещается в собственную ячейку с помощью addWidget(). Также возможно, чтобы виджет занимал несколько ячеек, используя перегрузки addItem() и addWidget() с указанием строк и столбцов. В этом случае QGridLayout определит, как распределить размер по столбцам/строкам (на основе коэффициентов растяжения).
Чтобы удалить виджет из макета, вызовите removeWidget(). Вызов QWidget::hide() на виджете также эффективно удаляет виджет из макета до тех пор, пока не будет вызван QWidget::show().
На этой иллюстрации показан фрагмент диалогового окна с сеткой 5 столбцов на 3 строки (сетка показана наложенной фиолетовым цветом):
Столбцы 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()
Конструктор нового макета сетки.
Вы должны вставить эту сетку в другой макет. Вы можете вставлять виджеты и макеты в этот макет в любое время, но выравнивание не будет выполнено до тех пор, пока этот макет не будет вставлен в другой макет.
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() вместо этого.
[virtual protected] void QGridLayout::addItem(QLayoutItem *item)
Переопределено из QLayout::addItem().
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().
[virtual] int QGridLayout::count() const
Переопределено из QLayout::count().
[virtual] Qt::Orientations QGridLayout::expandingDirections() const
Переопределено из QLayoutItem::expandingDirections().
void QGridLayout::getItemPosition(int index, int *row, int *column, int *rowSpan, int *columnSpan) const
Возвращает информацию о позиции элемента с заданным index.
Переменные, переданные как row и column, обновляются позицией элемента в макете, а переменные rowSpan и columnSpan обновляются вертикальным и горизонтальным размахом элемента.
См. также itemAtPosition() и itemAt().
[virtual] bool QGridLayout::hasHeightForWidth() const
Переопределено из QLayoutItem::hasHeightForWidth().
[virtual] int QGridLayout::heightForWidth(int w) const
Переопределено из QLayoutItem::heightForWidth().
[virtual] void QGridLayout::invalidate()
Переопределено из QLayoutItem::invalidate().
[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().
[virtual] QSize QGridLayout::maximumSize() const
Переопределено из QLayoutItem::maximumSize().
[virtual] int QGridLayout::minimumHeightForWidth(int w) const
Переопределено из QLayoutItem::minimumHeightForWidth().
[virtual] QSize QGridLayout::minimumSize() const
Переопределено из QLayoutItem::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().
[virtual] void QGridLayout::setGeometry(const QRect &rect)
Переопределено из QLayoutItem::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().
[virtual] QSize QGridLayout::sizeHint() const
Переопределено из QLayoutItem::sizeHint().
int QGridLayout::spacing() const
Если вертикальный и горизонтальный интервалы равны, эта функция возвращает это значение; в противном случае она возвращает -1.
См. также setSpacing(), verticalSpacing() и horizontalSpacing().
[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.6/qgridlayout.html