Home · All Classes · Main Classes · Grouped Classes · Modules · Functions

Описание Класса QGridLayout
[модуль QtGui]

Класс QGridLayout выравнивает виджеты по сетке. Далее...

#include <QGridLayout>

Наследует QLayout.

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

Дополнительные Унаследованные Члены


Подробное Описание

Класс QGridLayout выравнивает виджеты по сетке.

QGridLayout занимает отведенное ему место (отведенное родительский компоновщиком или parentWidget()), разбивает его на строки и столбцы и помещает каждый подконтрольный виджет в соответствующую ячейку.

Столбцы и строки ведут себя одинаково; мы обсудим столбцы, но есть эквивалентные функции для строк.

Каждый столбец имее минимальную ширину и фактор растяжения. Минимальная ширина - это максимальное значение из значения, установленного с помощью setColumnMinimumWidth(), и минимальных ширин всех виджетов, расположенных в колонке. Фактор растяжения устанавливается с помощью setColumnStretch() и определяет, сколько доступного места сверх минимального размера займет колонка.

Обычно, каждый подконтрольный виджет или компоновщик помещается в свою ячейку с помощью addWidget(). Виджет также можно поместить в несколько ячеек, чтобы он занимал несколько строк и колонок, используя перегруженные addItem() и addWidget(). Если Вы делаете это, то QGridLayout попытается распределить его размер по колонкам/строкам (основываясь на факторах растяжения).

Для удаления виджета из компоновщика вызовите remove(). Вызов 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 также учитывает две ширины: ширину границы и расстояние между соседними элементами. Ширина границы - это ширина незанимаемого пространства около каждой из четырех сторон QGridLayout. Расстояние между соседними элементами - это пространство, автоматически вставляемое между соседними ячейками.

Ширина границы по умолчанию и расстояние между виджетами зависят от стиля. По умолчанию в стилях Qt ширина границы равна 9 для виджетов и 11 для окон верхнего уровня.

См. также QBoxLayout, QStackedLayout и Layout Classes.


Описание Функций-Членов

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 = 0 )

Добавляет элемент item в позицию row, column, растягивая его на rowSpan строк и columnSpan колонок, и выравнивая его в соответствии с alignment. Если rowSpan и/или columnSpan равны -1, то элемент будет растянут до правого и/или нижнего края соответственно. Компоновщик становится владельцем item.

Внимание: Не используйте данную функцию для добавления дочерних компоновщиков и дочерних виджетов. Используйте addLayout() или addWidget() вместо этого.

void QGridLayout::addLayout ( QLayout * layout, int row, int column, Qt::Alignment alignment = 0 )

Размещает компоновщик 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 = 0 )

Данная перегруженная функция-член создана для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Эта версия добавляет компоновщик layout в ячейку сетки, растягивая его на несколько строк/столбцов. Начальная ячейка (row, column) растягивается на rowSpan строк и columnSpan столбцов.

Если rowSpan и/или columnSpan равно -1, то компоновщик растягивается до нижнего и/или правого края соответственно.

void QGridLayout::addWidget ( QWidget * widget, int row, int column, Qt::Alignment alignment = 0 )

Добавляет переданный виджет widget в ячейку сетки (row, column). По умолчанию это верхняя-левая позиция (0, 0).

Выравнивание задается с помощью alignment. По умолчани выравнивание равно 0, что означает заполнение виджетом всей ячейки.

void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )

Данная перегруженная функция-член создана для удобства. Ее поведение аналогично поведению вышеприведенной функции.

Эта версия добавляет виджет widget в ячейку сетки, растягивая его на несколько строк/столбцов. Начальная ячейка (row, column) растягивается на 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().

void QGridLayout::getItemPosition ( int index, int * row, int * column, int * rowSpan, int * columnSpan )

Возвращает позицию элемента с индексом index.

Переданные переменные row и column заполняются позициями элемента в компоновщике, а переменные rowSpan и columnSpan возвращаются вертивальным и горизонтальным растяжениями.

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().

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().


Copyright © 2005 Trolltech Trademarks
Qt 4.1.0
Hosted by uCoz