Описание класса QFormLayout
|
enum | FieldGrowthPolicy { FieldsStayAtSizeHint, ExpandingFieldsGrow, AllNonFixedFieldsGrow } |
enum | ItemRole { LabelRole, FieldRole, SpanningRole } |
enum | RowWrapPolicy { DontWrapRows, WrapLongRows, WrapAllRows } |
|
|
QFormLayout ( QWidget * parent = 0 ) | |
~QFormLayout () | |
void | addRow ( QWidget * label, QWidget * field ) |
void | addRow ( QWidget * label, QLayout * field ) |
void | addRow ( const QString & labelText, QWidget * field ) |
void | addRow ( const QString & labelText, QLayout * field ) |
void | addRow ( QWidget * widget ) |
void | addRow ( QLayout * layout ) |
FieldGrowthPolicy | fieldGrowthPolicy () const |
Qt::Alignment | formAlignment () const |
void | getItemPosition ( int index, int * rowPtr, ItemRole * rolePtr ) const |
void | getLayoutPosition ( QLayout * layout, int * rowPtr, ItemRole * rolePtr ) const |
void | getWidgetPosition ( QWidget * widget, int * rowPtr, ItemRole * rolePtr ) const |
int | horizontalSpacing () const |
void | insertRow ( int row, QWidget * label, QWidget * field ) |
void | insertRow ( int row, QWidget * label, QLayout * field ) |
void | insertRow ( int row, const QString & labelText, QWidget * field ) |
void | insertRow ( int row, const QString & labelText, QLayout * field ) |
void | insertRow ( int row, QWidget * widget ) |
void | insertRow ( int row, QLayout * layout ) |
QLayoutItem * | itemAt ( int row, ItemRole role ) const |
Qt::Alignment | labelAlignment () const |
QWidget * | labelForField ( QWidget * field ) const |
QWidget * | labelForField ( QLayout * field ) const |
int | rowCount () const |
RowWrapPolicy | rowWrapPolicy () const |
void | setFieldGrowthPolicy ( FieldGrowthPolicy policy ) |
void | setFormAlignment ( Qt::Alignment alignment ) |
void | setHorizontalSpacing ( int spacing ) |
void | setItem ( int row, ItemRole role, QLayoutItem * item ) |
void | setLabelAlignment ( Qt::Alignment alignment ) |
void | setLayout ( int row, ItemRole role, QLayout * layout ) |
void | setRowWrapPolicy ( RowWrapPolicy policy ) |
void | setSpacing ( int spacing ) |
void | setVerticalSpacing ( int spacing ) |
void | setWidget ( int row, ItemRole role, QWidget * widget ) |
int | spacing () const |
int | verticalSpacing () const |
virtual void | addItem ( QLayoutItem * item ) |
virtual int | count () const |
virtual Qt::Orientations | expandingDirections () const |
virtual bool | hasHeightForWidth () const |
virtual int | heightForWidth ( int width ) const |
virtual void | invalidate () |
virtual QLayoutItem * | itemAt ( int index ) const |
virtual QSize | minimumSize () const |
virtual void | setGeometry ( const QRect & rect ) |
virtual QSize | sizeHint () const |
virtual QLayoutItem * | takeAt ( int index ) |
Класс QFormLayout управляет формами виджетов ввода и связанных с ними меток.
QFormLayout является вспомогательным классом компоновки, который размещает свои дочерние элементы в двух столбцах. Левый столбец содержит метки, а правый столбец содержит виджеты-поля ввода (однострочные редакторы, счётчики и т.д.).
Обычно такая форма компоновки в два столбца достигалась с использованием QGridLayout. QFormLayout является высокоуровневой альтернативой, которая предоставляет следующие преимущества:
Например, руководства Mac OS X Aqua и KDE указывают, что метки должны быть выровнены по правому краю, в то время как приложения Windows и GNOME обычно используют выравнивание по левому краю.
Для устройств с маленькими экранами QFormLayout может быть настроен на перенос длинных строк или даже на перенос всех строк.
Перегруженная addRow(), которая принимает QString и QWidget *, самостоятельно создаёт QLabel и автоматически устанавливает её партнёра. Тогда можно написать код, похожий на это:
QFormLayout *formLayout = new QFormLayout; formLayout->addRow(tr("&Name:"), nameLineEdit); formLayout->addRow(tr("&Email:"), emailLineEdit); formLayout->addRow(tr("&Age:"), ageSpinBox); setLayout(formLayout);
Сравните его со следующим кодом, написанным при помощи QGridLayout:
nameLabel = new QLabel(tr("&Name:")); nameLabel->setBuddy(nameLineEdit); emailLabel = new QLabel(tr("&Name:")); emailLabel->setBuddy(emailLineEdit); ageLabel = new QLabel(tr("&Name:")); ageLabel->setBuddy(ageSpinBox); QGridLayout *gridLayout = new QGridLayout; gridLayout->addWidget(nameLabel, 0, 0); gridLayout->addWidget(nameLineEdit, 0, 1); gridLayout->addWidget(emailLabel, 1, 0); gridLayout->addWidget(emailLineEdit, 1, 1); gridLayout->addWidget(ageLabel, 2, 0); gridLayout->addWidget(ageSpinBox, 2, 1); setLayout(gridLayout);
В таблице ниже показан внешний вид по умолчанию в разных стилях.
Производные стили QCommonStyle (за исключением QPlastiqueStyle) | QMacStyle | QPlastiqueStyle | Стили Qt Extended |
---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Традиционный стиль, используемый для Windows, GNOME и ранних версий KDE. Метки выровнены по левому краю, а расширяющиеся поля увеличиваются, чтобы заполнить доступное место. (Это обычно соответствует тому, что мы получили бы при использовании QGridLayout с двумя столбцами.) | Стиль, основанный на руководстве Mac OS X Aqua. Метки выровнены по правому краю, поля не увеличиваются за пределы их подсказки о размере, а форма центрируется по горизонтали. | Рекомендуемый стиль для приложений KDE. Похоже на MacStyle, за исключением того, что формы выровнены по левому краю, а все поля увеличиваются, чтобы заполнить доступное место. | Стиль по умолчанию для стилей Qt Extended. Метки выровнены по правому краю, расширяющиеся поля увеличиваются, чтобы заполнить доступное место, и включён перенос строк для длинных строк. |
Стиль формы может быть также переопределён индивидуально вызовами setLabelAlignment(), setFormAlignment(), setFieldGrowthPolicy() и setRowWrapPolicy(). Например, чтобы на всех платформах сымитировать внешний вид компоновки формы QMacStyle, но с выравниванием меток по левому краю, вы должны написать:
formLayout->setRowWrapPolicy(QFormLayout::DontWrapRows); formLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint); formLayout->setFormAlignment(Qt::AlignHCenter | Qt::AlignTop); formLayout->setLabelAlignment(Qt::AlignLeft);
Смотрите также QGridLayout, QBoxLayout и QStackedLayout.
Данное перечисление определяет различные политики, которые могут быть использованы для контроля способов, которыми могут увеличиваться поля формы.
Константа | Значение | Описание |
---|---|---|
QFormLayout::FieldsStayAtSizeHint | 0 | Поля никогда не увеличиваются за пределы их эффективной подсказки о размере. Это значение по умолчанию для QMacStyle. |
QFormLayout::ExpandingFieldsGrow | 1 | Поля с горизонтальной политикой размера, равной Expanding или MinimumExpanding, будут увеличиваться, чтобы заполнить доступное место. Остальные поля не будут увеличиваться за пределы их эффективной подсказки о размере. Это политика по умолчанию для Plastique. |
QFormLayout::AllNonFixedFieldsGrow | 2 | Все поля с политикой размера, которая позволяет им увеличиваться, будут увеличиваться, чтобы заполнить доступное место. Это политика по умолчанию для большинства стилей. |
Смотрите также fieldGrowthPolicy.
Данное перечисление определяет типы виджетов (или других элементов компоновщика), которые могут появиться в строке.
Константа | Значение | Описание |
---|---|---|
QFormLayout::LabelRole | 0 | Виджет метки. |
QFormLayout::FieldRole | 1 | Виджет поля. |
QFormLayout::SpanningRole | 2 | Виджет, который охватывает столбцы метки и поля. |
Смотрите также itemAt() и getItemPosition().
Данное перечисление определяет различные политики, которые могут быть использованы управления тем, как могут переноситься строки формы.
Константа | Значение | Описание |
---|---|---|
QFormLayout::DontWrapRows | 0 | Поля всегда располагаются рядом с их меткой. Это политика по умолчанию для всех стилей, кроме стилей Qt Extended и QS60Style. |
QFormLayout::WrapLongRows | 1 | Меткам выделяется достаточное место для размещения самой широкой метки, а остальное место отдаётся полям. Если минимальный размер пары поля шире, чем доступное место, то поле переносится на следующую строку. Это политика по умолчанию для стилей Qt Extended и QS60Style. |
QFormLayout::WrapAllRows | 2 | Поля всегда размещаются ниже своей метки. |
Смотрите также rowWrapPolicy.
Это свойство содержит способы, которыми могут увеличиваться поля формы.
Значение по умолчанию зависит от виджета или стиля приложения. Для QMacStyle значением по умолчанию является FieldsStayAtSizeHint; для производных от QCommonStyle стилей (как Plastique и Windows) - ExpandingFieldsGrow; для стилей Qt Extended - AllNonFixedFieldsGrow.
Если ни одно поле не может быть увеличено, а форма изменяет размер, то дополнительное место распределяется в соответствии с текущим выравниванием формы.
Функции доступа:
FieldGrowthPolicy | fieldGrowthPolicy () const |
void | setFieldGrowthPolicy ( FieldGrowthPolicy policy ) |
Смотрите также formAlignment и rowWrapPolicy.
Это свойство содержит выравнивание содержимого компоновщика формы в геометрии компоновщика.
Значение по умолчанию зависит от виджета или стиля приложения. Для QMacStyle значением по умолчанию является Qt::AlignHCenter | Qt::AlignTop; для других стилей - Qt::AlignLeft | Qt::AlignTop.
Функции доступа:
Qt::Alignment | formAlignment () const |
void | setFormAlignment ( Qt::Alignment alignment ) |
Смотрите также labelAlignment и rowWrapPolicy.
Это свойство содержит расстояние между виджетами, которые расположены бок о бок.
По умолчанию, если никакое значение не установлено явно, то горизонтальное расстояние компоновщика наследуется от родительского компоновщика или из настроек стиля для родительского виджета.
Функции доступа:
int | horizontalSpacing () const |
void | setHorizontalSpacing ( int spacing ) |
Смотрите также verticalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.
Это свойство содержит горизонтальное выравнивание меток.
Значение по умолчанию зависит от виджета или стиля приложения. Для производных от QCommonStyle стилей, исключая QPlastiqueStyle, значением по умолчанию является Qt::AlignLeft; для других стилей - Qt::AlignRight.
Функции доступа:
Qt::Alignment | labelAlignment () const |
void | setLabelAlignment ( Qt::Alignment alignment ) |
Смотрите также formAlignment.
Это свойство содержит способ, которым переносятся строки формы.
Значение по умолчанию зависит от виджета или стиля приложения. Для стилей Qt Extended и QS60Style значением по умолчанию является WrapLongRows; для других стилей - DontWrapRows.
Если вы хотите отобразить каждую метку над связанным с ней полем (вместо отображения рядом с ней), то установите это свойство в WrapAllRows.
Функции доступа:
RowWrapPolicy | rowWrapPolicy () const |
void | setRowWrapPolicy ( RowWrapPolicy policy ) |
Смотрите также fieldGrowthPolicy.
Это свойство содержит расстояние между виджетами, которые расположены вертикально.
По умолчанию, если никакое значение не установлено явно, то вертикальное расстояние компоновщика наследуется от родительского компоновщика или из настроек стиля для родительского виджета.
Функции доступа:
int | verticalSpacing () const |
void | setVerticalSpacing ( int spacing ) |
Смотрите также horizontalSpacing, QStyle::pixelMetric() и PM_LayoutHorizontalSpacing.
Создаёт новый компоновщик формы с заданным родительским виджетом parent.
Смотрите также QWidget::setLayout().
Уничтожает компоновщик формы.
Переопределено из QLayout::addItem().
Добавляет новую строку в нижнюю часть этого компоновщика формы с заданными меткой label и полем field.
Смотрите также insertRow().
Это перегруженная функция.
Это перегруженная функция.
Эта перегруженная функция автоматически скрытно создаёт QLabel с labelText в качестве его текста. Поле field устанавливается для QLabel как новый партнёр.
Это перегруженная функция.
Эта перегруженная функция автоматически скрытно создаёт QLabel с labelText в качестве его текста.
Это перегруженная функция.
Добавляет указанный виджет widget в конец этого компоновщика формы. Виджет widget занимает оба столбца.
Это перегруженная функция.
Добавляет указанный компоновщик layout в конец этого компоновщика формы. Компоновщик layout занимает оба столбца.
Переопределено от QLayout::count().
Переопределено из QLayoutItem::expandingDirections().
Возвращает строку и роль (столбец) элемента с указанным индексом index. Если index находится вне границ, то *rowPtr устанавливается в -1; в противном случае строка сохраняется в *rowPtr, а роль - в *rolePtr.
Смотрите также itemAt(), count(), getLayoutPosition() и getWidgetPosition().
Возвращает строку и роль (столбец) указанного дочернего компоновщика layout. Если компоновщик layout не находится на компоновщике формы, то *rowPtr устанавливается в -1; в противном случае строка сохраняется в *rowPtr, а роль - в *rolePtr.
Возвращает строку и роль (столбец) указанного виджета widget в компоновщике. Если виджет widget не находится в компоновщике, то *rowPtr устанавливается в -1; в противном случае строка сохраняется в *rowPtr, а роль - в *rolePtr.
Смотрите также getItemPosition() и itemAt().
Переопределено от QLayoutItem::hasHeightForWidth().
Переопределено от QLayoutItem::heightForWidth().
Inserts a new row at position row in this form layout, with the given label and field. If row is out of bounds, the new row is added at the end.
See also addRow().
Это перегруженная функция.
Это перегруженная функция.
Эта перегруженная функция автоматически скрытно создаёт QLabel с labelText в качестве его текста. Поле field устанавливается для QLabel как новый партнёр.
Это перегруженная функция.
Эта перегруженная функция автоматически скрытно создаёт QLabel с labelText в качестве его текста.
Это перегруженная функция.
Inserts the specified widget at position row in this form layout. The widget spans both columns. If row is out of bounds, the widget is added at the end.
Это перегруженная функция.
Inserts the specified layout at position row in this form layout. The layout spans both columns. If row is out of bounds, the widget is added at the end.
Переопределено из QLayoutItem::invalidate().
Returns the layout item in the given row with the specified role (column). Returns 0 if there is no such item.
See also QLayout::itemAt() and setItem().
Переопределено из QLayout::itemAt().
Returns the label associated with the given field.
Смотрите также itemAt().
Это перегруженная функция.
Переопределено из QLayoutItem::minimumSize().
Returns the number of rows in the form.
See also QLayout::count().
Переопределено из QLayoutItem::setGeometry().
Sets the item in the given row for the given role to item, extending the layout with empty rows if necessary.
If the cell is already occupied, the item is not inserted and an error message is sent to the console. The item spans both columns.
Warning: Do not use this function to add child layouts or child widget items. Use setLayout() or setWidget() instead.
Смотрите также setLayout().
Sets the sub-layout in the given row for the given role to layout, extending the form layout with empty rows if necessary.
If the cell is already occupied, the layout is not inserted and an error message is sent to the console.
Note: For most applications, addRow() or insertRow() should be used instead of setLayout().
Смотрите также setWidget().
This function sets both the vertical and horizontal spacing to spacing.
See also spacing(), setVerticalSpacing(), and setHorizontalSpacing().
Sets the widget in the given row for the given role to widget, extending the layout with empty rows if necessary.
If the cell is already occupied, the widget is not inserted and an error message is sent to the console.
Note: For most applications, addRow() or insertRow() should be used instead of setWidget().
Смотрите также setLayout().
Переопределено из QLayoutItem::sizeHint().
If the vertical spacing is equal to the horizontal spacing, this function returns that value; otherwise it returns -1.
See also setSpacing(), verticalSpacing(), and horizontalSpacing().
Переопределено из QLayout::takeAt().
Авторские права © 2010 Nokia Corporation и/или её дочерние компании | Торговые марки | Qt 4.6.4 |
Попытка перевода Qt документации. Если есть желание присоединиться, или если есть замечания или пожелания, то заходите на форум: Перевод Qt документации на русский язык... Люди внесшие вклад в перевод: Команда переводчиков |