Spec-Zone.ru › Qt 6.1

Класс QGridLayout

Класс QGridLayout размещает виджеты в сетке. Подробнее...

Заголовок: #include <QGridLayout>
CMake: find_package(Qt6 COMPONENTS Widgets REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake: QT += widgets
Наследует: QLayout
  • Список всех членов, включая унаследованные

Свойства

  • horizontalSpacing : int
  • verticalSpacing : int

Открытые функции

QGridLayout(QWidget *parent = nullptr)
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 setVerticalSpacing(int spacing)
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 void setSpacing(int spacing) override
virtual QSize sizeHint() const override
virtual int spacing() 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().

На этом рисунке показан фрагмент диалогового окна с сеткой из пяти столбцов и трёх строк (сетка показана пурпурным цветом):

A grid layout

Столбцы 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()) — это ширина автоматически выделенного интервала между соседними ячейками.

Значения отступа содержимого по умолчанию предоставляются стилем. Значение по умолчанию, указанное стилями Qt, равно 9 для дочерних виджетов и 11 для окон. Интервал по умолчанию совпадает с шириной отступа для макета верхнего уровня или с шириной отступа родительского макета.

См. также QBoxLayout, QStackedLayout, Управление макетами и Пример базовых макетов.

Документация свойств

horizontalSpacing : int

Это свойство содержит интервал между виджетами, расположенными бок о бок.

Если значение не установлено явно, горизонтальный интервал макета наследуется от родительского макета или из настроек стиля родительского виджета.

Функции доступа:

int horizontalSpacing() const
void setHorizontalSpacing(int spacing)

См. также verticalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.

verticalSpacing : int

Это свойство содержит интервал между виджетами, расположенными друг над другом.

Если значение не установлено явно, вертикальный интервал макета наследуется от родительского макета или из настроек стиля родительского виджета.

Функции доступа:

int verticalSpacing() const
void setVerticalSpacing(int spacing)

См. также horizontalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.

Документация по членам-функциям

QGridLayout::QGridLayout(QWidget *parent = nullptr)

Создаёт новый QGridLayout с родительским виджетом parent. Макет имеет одну строку и один столбец по умолчанию и будет расширяться при вставке новых элементов.

Макет устанавливается напрямую как макет верхнего уровня для parent. Для виджета может быть только один макет верхнего уровня. Он возвращается методом QWidget::layout().

Если parent — nullptr, то вы должны вставить этот макет сетки в другой макет или установить его как макет виджета с помощью QWidget::setLayout().

См. также QWidget::setLayout().

[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 если ячейка пуста.

См. также 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().

[override virtual] void QGridLayout::setSpacing(int spacing)

Переопределяет функцию доступа к свойству: QLayout::spacing.

Эта функция устанавливает вертикальный и горизонтальный отступы в spacing.

См. также spacing(), setVerticalSpacing() и setHorizontalSpacing().

[override virtual] QSize QGridLayout::sizeHint() const

Переопределяет: QLayoutItem::sizeHint() const.

[override virtual] int QGridLayout::spacing() const

Переопределяет функцию доступа к свойству: QLayout::spacing.

Если вертикальный отступ равен горизонтальному отступу, эта функция возвращает это значение; в противном случае возвращает -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-6.1/qgridlayout.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API