Описание класса QLayout
|
enum | SizeConstraint { SetDefaultConstraint, SetFixedSize, SetMinimumSize, SetMaximumSize, SetMinAndMaxSize, SetNoConstraint } |
QLayout ( QWidget * parent ) | |
QLayout () | |
bool | activate () |
virtual void | addItem ( QLayoutItem * item ) = 0 |
void | addWidget ( QWidget * w ) |
QMargins | contentsMargins () const |
QRect | contentsRect () const |
virtual int | count () const = 0 |
void | getContentsMargins ( int * left, int * top, int * right, int * bottom ) const |
virtual int | indexOf ( QWidget * widget ) const |
bool | isEnabled () const |
virtual QLayoutItem * | itemAt ( int index ) const = 0 |
QWidget * | menuBar () const |
QWidget * | parentWidget () const |
void | removeItem ( QLayoutItem * item ) |
void | removeWidget ( QWidget * widget ) |
bool | setAlignment ( QWidget * w, Qt::Alignment alignment ) |
void | setAlignment ( Qt::Alignment alignment ) |
bool | setAlignment ( QLayout * l, Qt::Alignment alignment ) |
void | setContentsMargins ( int left, int top, int right, int bottom ) |
void | setContentsMargins ( const QMargins & margins ) |
void | setEnabled ( bool enable ) |
void | setMenuBar ( QWidget * widget ) |
void | setSizeConstraint ( SizeConstraint ) |
void | setSpacing ( int ) |
SizeConstraint | sizeConstraint () const |
int | spacing () const |
virtual QLayoutItem * | takeAt ( int index ) = 0 |
void | update () |
virtual Qt::Orientations | expandingDirections () const |
virtual QRect | geometry () const |
virtual void | invalidate () |
virtual bool | isEmpty () const |
virtual QLayout * | layout () |
virtual QSize | maximumSize () const |
virtual QSize | minimumSize () const |
virtual void | setGeometry ( const QRect & r ) |
QSize | closestAcceptableSize ( const QWidget * widget, const QSize & size ) |
void | addChildLayout ( QLayout * l ) |
void | addChildWidget ( QWidget * w ) |
QRect | alignmentRect ( const QRect & r ) const |
virtual void | childEvent ( QChildEvent * e ) |
Класс QLayout - это базовый класс для менеджеров компоновки (компоновщиков).
Это абстрактный базовый класс, от которого наследуются конкретные классы QBoxLayout, QGridLayout, QFormLayout и QStackedLayout.
Для пользователей подклассов QLayout'а или QMainWindow редко возникает необходимость использовать базовые функции предоставляемые классом QLayout такие, как setSizeConstraint() или setMenuBar(). Для получения дополнительной информации смотрите Управление компоновкой.
Чтобы создать собственный компоновщик, реализуйте функции addItem(), sizeHint(), setGeometry(), itemAt() и takeAt(). Вы должны также реализовать функцию minimumSize(), чтобы гарантировать, что ваш компоновщик не уменьшается до нулевого размера, в случае если места слишком мало. Чтобы поддержать дочерние виджеты, высота которых зависит от их ширины, реализуйте функцию hasHeightForWidth() и heightForWidth(). Для получения дополнительной информации о реализации пользовательских компоновщиков смотрите примеры Border Layout и Flow Layout.
Управление компоновкой прекращается, когда компоновщик удаляется.
Смотрите также QLayoutItem, Управление компоновкой, Пример "Basic Layouts", Пример "Border Layout" и Пример "Flow Layout".
Возможные значения:
Константа | Значение | Описание |
---|---|---|
QLayout::SetDefaultConstraint | 0 | Минимальный размер главного виджета устанавливается в minimumSize(), если виджет ещё не имеет минимального размера. |
QLayout::SetFixedSize | 3 | Размер главного виджета устанавливается в sizeHint(); он не может быть изменён. |
QLayout::SetMinimumSize | 2 | Минимальный размер главного виджета устанавливается в minimumSize(); он не может быть меньше. |
QLayout::SetMaximumSize | 4 | Максимальный размер главного виджета устанавливается в maximumSize(); он не может быть больше. |
QLayout::SetMinAndMaxSize | 5 | Минимальный размер главного виджета устанавливается в minimumSize() и его максимальный размер устанавливается в maximumSize(). |
QLayout::SetNoConstraint | 1 | Виджет не имеет ограничений. |
Смотрите также setSizeConstraint().
Это свойство содержит режим изменения размера компоновщика.
Режим по умолчанию равен SetDefaultConstraint.
Функции доступа:
SizeConstraint | sizeConstraint () const |
void | setSizeConstraint ( SizeConstraint ) |
Это свойство содержит интервал (шаг) между виджетами внутри компоновщика.
Если значение не установлено явно, то интервал компоновщика наследуется от родительского компоновщика, или из настроек стиля для родительского виджета.
Для компоновщиков QGridLayout и QFormLayout, можно устанавливать разные горизонтальные и вертикальные интервалы, используя функции setHorizontalSpacing() и setVerticalSpacing(). В этом случае, функция spacing() вернёт -1.
Функции доступа:
int | spacing () const |
void | setSpacing ( int ) |
Смотрите также contentsRect(), getContentsMargins(), QStyle::layoutSpacing() и QStyle::pixelMetric().
конструирует новый QLayout верхнего уровня, с родителем parent. parent не может быть 0.
Для виджета может быть только один компоновщик верхнего уровня. Он возвращается функцией QWidget::layout().
Конструирует новый дочерний QLayout.
Этот компоновщик должен быть вставлен в другой компоновщик до того, как управление компоновкой начнёт работать.
Повторно выполняет компоновку для parentWidget(), если необходимо.
Обычно, вы не нуждаетесь в вызове этой функции, потому что она автоматически вызывается в большинстве соответствующих случаев. Она вернёт true, если компоновка выполнилась повторно.
Смотрите также update() и QWidget::updateGeometry().
Эта функция вызывается в подклассе из функции addLayout() или insertLayout(), чтобы добавить компоновщик l в качестве вложенного.
Единственный сценарий, в котором вам нужно вызвать её напрямую - это, если вы реализуете пользовательский компоновщик, который поддерживает вложенные.
Смотрите также QBoxLayout::addLayout(), QBoxLayout::insertLayout() и QGridLayout::addLayout().
Эта функция вызывается в подклассе из функции addWidget(), чтобы добавить w в качестве дочернего виджета.
Если w уже находится в компоновщике, то эта функция подаст предупреждение и удалит w из компоновщика. Следовательно, эта функция должна быть вызвана перед добавлением w в структуру данных компоновщика.
Реализуется в подклассе, чтобы добавить item. Как происходит добавление, определяется в конкретном подклассе.
Эта функция, обычно, не вызывается из кода приложения. Чтобы добавить виджет в компоновщик, используйте функцию addWidget(); чтобы добавить дочерний компоновщик, используйте функцию addLayout(), предоставляемую связанным подклассом QLayout'а.
Замечание: Владение элементом item передаётся компоновщику, и компоновщик отвечает за его удаление.
Смотрите также addWidget(), QBoxLayout::addLayout() и QGridLayout::addLayout().
Добавляет виджет w в этот компоновщик, и способом, зависящим от компоновщика. Эта функция используется функцией addItem().
Возвращает охватывающий прямоугольник, когда геометрия этого компоновщика устанавливается в r, при условии, что этот компоновщик поддерживает setAlignment().
Результат получается из sizeHint() и expanding(). Он ни когда не превышает r.
Переопределено из QObject::childEvent().
Возвращает размер, который удовлетворяет всем ограничениям на размер widget'а, включая heightForWidth() и, который настолько ближе к size насколько это возможно.
Возвращает поля (margins) используемые вокруг компоновки.
По умолчанию QLayout использует значения, предоставляемые стилями. На большинстве платформ, поле равно 11 пикселям во всех направлениях.
Эта функция была введена в Qt 4.6.
Смотрите также setContentsMargins().
Возвращает прямоугольник geometry() компоновщика, но с учётом полей (margins) содержимого.
Эта функция была введена в Qt 4.3.
Смотрите также setContentsMargins() и getContentsMargins().
Должен быть реализован в подклассе, чтобы вернуть количество элементов в компоновщике.
Смотрите также itemAt().
Переопределено из QLayoutItem::expandingDirections().
Возвращает, может ли этот компоновщик использовать больше места, чем возвращает функция sizeHint(). Значения Qt::Vertical или Qt::Horizontal означают, что он желает увеличиваться только в одном измерении, тогда как Qt::Vertical | Qt::Horizontal означает, что он желает увеличиваться в обоих измерениях.
Реализация по умолчанию возвращает Qt::Horizontal | Qt::Vertical. Подклассы переопределяют его, чтобы вернуть наиболее значимую величину, основанную на политике размеров их дочерних виджетов.
Смотрите также sizeHint().
Переопределено из QLayoutItem::geometry().
Смотрите также setGeometry().
Извлекает левое, верхнее, правое, и нижнее поля (margins) использованные вокруг компоновщика, и присваивает их аргументам *left, *top, *right, и *bottom (если они не нулевые указатели).
По умолчанию QLayout использует значения, предоставляемые стилями. На большинстве платформ, поле равно 11 пикселям во всех направлениях.
Эта функция была введена в Qt 4.3.
Смотрите также setContentsMargins(), QStyle::pixelMetric(), PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin и PM_LayoutBottomMargin.
Ищет виджет widget в этом компоновщике (исключая дочерние компоновщики).
Возвращает индекс widget'а, либо -1 если widget не найден.
Реализация по умолчанию обходит все элементы, используя функцию itemAt()
Переопределено из QLayoutItem::invalidate().
Переопределено из QLayoutItem::isEmpty().
Возвращает true, если компоновщик разрешён; в противном случае возвращает false.
Смотрите также setEnabled().
Должно быть реализовано в подклассах, чтобы вернуть элемент компоновки в позиции с индексом index. если не существует такого элемента, то функция должна вернуть 0. Элементы нумеруются последовательно начиная с 0. Если элемент удалён, то другие элементы будут перенумерованы.
Эта функция может быть использована, чтобы обойти весь компоновщик. Следующий код нарисует прямоугольник для каждого элемента компоновщика в структуре компоновки виджета.
static void paintLayout(QPainter *painter, QLayoutItem *item) { QLayout *layout = item->layout(); if (layout) { for (int i = 0; i < layout->count(); ++i) paintLayout(painter, layout->itemAt(i)); } painter->drawRect(item->geometry()); } void MyWidget::paintEvent(QPaintEvent *) { QPainter painter(this); if (layout()) paintLayout(&painter, layout()); }
Смотрите также count() и takeAt().
Переопределено из QLayoutItem::layout().
Переопределено из QLayoutItem::maximumSize().
Возвращает максимальный размер этого компоновщика. Это наибольший размер, который может иметь компоновщик, по прежнему соответствуя спецификации (определению).
Возвращаемое значение не включает пространство требуемое функцией QWidget::setContentsMargins() или menuBar().
Реализация по умолчанию допускает неограниченное изменение размеров.
Возвращает панель меню, установленную для этого компоновщика, или 0, если панель меню не установлена.
Смотрите также setMenuBar().
Переопределено из QLayoutItem::minimumSize().
Возвращает минимальный размер этого компоновщика. Это наименьший размер, который может иметь компоновщик, по прежнему соответствуя спецификации (определению).
Возвращаемое значение не включает пространство требуемое функцией QWidget::setContentsMargins() или menuBar().
Реализация по умолчанию допускает неограниченное изменение размеров.
Возвращает родительский виджет этого компоновщика, или 0, если этот компоновщик не установлен ни для одного виджета.
Если компоновщик - подкомпоновщик, эта функция возвращает родительский виджет родительского компоновщика.
Смотрите также parent().
Удаляет элемент компоновщика item из этого компоновщика. Вызывающий ответственен за удаление элемента.
Заметьте, что item может быть компоновщиком (т.к. QLayout унаследован от QLayoutItem).
Смотрите также removeWidget() и addItem().
Удаляет виджет widget из компоновщика. После вызова этой функции, вызывающий ответственен за установку виджету приемлемой геометрии или помещение виджета обратно в компоновщик.
Замечание: Владельцем widget'а остаётся тот же, что и при его добавлении.
Смотрите также removeItem(), QWidget::setGeometry() и addWidget().
Устанавливает выравнивание для виджета w равным alignment и возвращает true если виджет w найден в этом компоновщике (исключая дочерние компоновщик); в противном случае возвращает false.
Устанавливает выравнивание этого элемента равным alignment.
Смотрите также QLayoutItem::setAlignment().
Это перегруженная функция.
Устанавливает выравнивание для компоновщика l равным alignment и возвращает true если компоновщик l найден в этом компоновщике (исключая дочерние компоновщик); в противном случае возвращает false.
Устанавливает левое, верхнее, правое, и нижнее поля, для использования вокруг компоновщика.
По умолчанию QLayout использует значения, предоставляемые стилями. На большинстве платформ, поле равно 11 пикселям во всех направлениях.
Эта функция была введена в Qt 4.3.
Смотрите также contentsMargins(), getContentsMargins(), QStyle::pixelMetric(), PM_LayoutLeftMargin, PM_LayoutTopMargin, PM_LayoutRightMargin и PM_LayoutBottomMargin.
Устанавливает margins для использования вокруг компоновки.
По умолчанию QLayout использует значения, предоставляемые стилями. На большинстве платформ, поле равно 11 пикселям во всех направлениях.
Эта функция была введена в Qt 4.6.
Смотрите также contentsMargins().
Разрешает этот компоновщик, если enable равен true, в противном случае запрещает его.
Разрешённый компоновщик подстраивается автоматически к изменениям; запрещённый компоновщик действует, как если бы он отсутствовал.
По умолчанию все компоновщики разрешены.
Смотрите также isEnabled().
Переопределено из QLayoutItem::setGeometry().
Смотрите также geometry().
Указывает компоновщику разместить панель меню widget сверху parentWidget(), снаружи QWidget::contentsMargins(). Все дочерние виджеты помещаются под нижнем краем панели меню.
Смотрите также menuBar().
Должно быть реализовано в подклассах, чтобы удалить элемент компоновки, в позиции с индексом index, из компоновщика, и вернуть его. Если нет такого элемента, то функция ничего не должна делать и должна вернуть 0. Элементы нумеруются последовательно начиная с 0. Если элемент удалён, то другие элементы будут перенумерованы.
Следующий фрагмент кода показывает безопасный способ удаления всех элементов из компоновщика:
QLayoutItem *child; while ((child = layout->takeAt(0)) != 0) { ... delete child; }
Смотрите также itemAt() и count().
Обновляет компоновщик для parentWidget().
Обычно, вы не нуждаетесь в вызове этой функции, потому что она автоматически вызывается в большинстве соответствующих случаев.
Смотрите также activate() и invalidate().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |