Тип QML Popup
Базовый тип элементов пользовательского интерфейса, похожих на всплывающие окна. Подробнее...
| Заявление импорта: | import QtQuick.Controls 2.14 |
| С момента: | Qt 5.7 |
| Наследует: | |
| Наследуется от: |
Свойства
- activeFocus : bool
- anchors.centerIn : Объект
- availableHeight : вещественное
- availableWidth : вещественное
- background : Item
- bottomInset : вещественное
- bottomMargin : вещественное
- bottomPadding : вещественное
- clip : bool
- closePolicy : перечисление
- contentChildren : список<Item>
- contentData : список<Объект>
- contentHeight : вещественное
- contentItem : Item
- contentWidth : вещественное
- dim : bool
- enabled : bool
- enter : Переход
- exit : Переход
- focus : bool
- font : шрифт
- height : вещественное
- horizontalPadding : вещественное
- implicitBackgroundHeight : вещественное
- implicitBackgroundWidth : вещественное
- implicitContentHeight : вещественное
- implicitContentWidth : вещественное
- implicitHeight : вещественное
- implicitWidth : вещественное
- leftInset : вещественное
- leftMargin : вещественное
- leftPadding : вещественное
- locale : Локаль
- margins : вещественное
- mirrored : bool
- modal : bool
- opacity : вещественное
- opened : bool
- padding : вещественное
- palette : цветовая_схема
- parent : Item
- rightInset : вещественное
- rightMargin : вещественное
- rightPadding : вещественное
- scale : вещественное
- spacing : вещественное
- topInset : вещественное
- topMargin : вещественное
- topPadding : вещественное
- transformOrigin : перечисление
- verticalPadding : вещественное
- visible : bool
- width : вещественное
- x : вещественное
- y : вещественное
- z : вещественное
Сигналы
- void aboutToHide()
- void aboutToShow()
- void closed()
- void opened()
Методы
- void close()
- forceActiveFocus(перечисление reason = Qt.OtherFocusReason)
- void open()
Подробное описание
Popup — базовый тип всплывающих элементов пользовательского интерфейса. Его можно использовать с Window или ApplicationWindow.
import QtQuick.Window 2.2
import QtQuick.Controls 2.12
ApplicationWindow {
id: window
width: 400
height: 400
visible: true
Button {
text: "Open"
onClicked: popup.open()
}
Popup {
id: popup
x: 100
y: 100
width: 200
height: 300
modal: true
focus: true
closePolicy: Popup.CloseOnEscape | Popup.CloseOnPressOutsideParent
}
} Для обеспечения отображения всплывающего окна поверх других элементов сцены рекомендуется использовать ApplicationWindow. ApplicationWindow также предоставляет эффекты затемнения фона.
Popup не предоставляет собственной компоновки, но требует от вас позиционирования содержимого, например, с помощью создания RowLayout или ColumnLayout.
Элементы, объявленные в качестве дочерних элементов Popup, автоматически становятся дочерними элементами contentItem Popup. Динамически созданные элементы необходимо явно присоединить к contentItem.
Компоновка Popup
На следующем рисунке показана компоновка Popup в окне:
Значения implicitWidth и implicitHeight Popup обычно основаны на неявных размерах элемента background и элемента contentItem плюс любые отступы и отступы. Эти свойства определяют размер Popup, когда не заданы явные значения width или height.
Геометрия элемента contentItem определяется значением padding. В следующем примере сохраняется отступ в 10 пикселей между границами Popup и его содержимым:
Popup {
padding: 10
contentItem: Text {
text: "Content"
}
} Элемент background заполняет всю ширину и высоту Popup, если для него не заданы отступы или явные размеры.
Отрицательные отступы могут использоваться для увеличения размера фона по сравнению с Popup. В следующем примере используются отрицательные отступы для размещения тени за пределами границ Popup:
Popup {
topInset: -2
leftInset: -2
rightInset: -6
bottomInset: -6
background: BorderImage {
source: ":/images/shadowed-background.png"
}
} Изменение размера Popup
Если используется только один элемент внутри Popup, он будет изменён, чтобы соответствовать неявным размерам содержащего его элемента. Это делает его особенно подходящим для использования совместно с макетами.
Popup {
ColumnLayout {
anchors.fill: parent
CheckBox { text: qsTr("E-mail") }
CheckBox { text: qsTr("Calendar") }
CheckBox { text: qsTr("Contacts") }
}
} Иногда внутри Popup может быть два элемента:
Popup {
SwipeView {
// ...
}
PageIndicator {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
}
} В этом случае Popup не может вычислить разумный неявный размер. Поскольку мы привязываем PageIndicator к SwipeView, мы можем просто установить размер содержимого в соответствии с неявным размером представления:
Popup {
contentWidth: view.implicitWidth
contentHeight: view.implicitHeight
SwipeView {
id: view
// ...
}
PageIndicator {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
}
} Позиционирование Popup
Аналогично элементам Qt Quick, координаты x и y Popup относительны к его родительскому элементу. Это означает, что открытие Popup, являющегося дочерним элементом Button, например, приведет к позиционированию Popup относительно кнопки.
В следующем примере используется свойство Overlay.overlay, чтобы расположить Popup в центре окна, несмотря на позицию кнопки, открывающей Popup:
Button {
onClicked: popup.open()
Popup {
id: popup
parent: Overlay.overlay
x: Math.round((parent.width - width) / 2)
y: Math.round((parent.height - height) / 2)
width: 100
height: 100
}
} Другой способ центрировать всплывающее окно в окне независимо от родительского элемента — использовать anchors.centerIn:
ApplicationWindow {
id: window
// ...
Pane {
// ...
Popup {
anchors.centerIn: Overlay.overlay
}
}
} Чтобы гарантировать, что всплывающее окно расположено в пределах границ содержащего его окна, свойство margins можно установить на ненулевое значение.
См. также Всплывающие элементы управления, Настройка всплывающего окна и ApplicationWindow.
Документация по свойствам
[только для чтения] activeFocus : bool
Это свойство указывает, имеет ли всплывающее окно активный фокус.
См. также focus и Фокус клавиатуры в Qt Quick.
anchors.centerIn : Object
Якоря предоставляют способ позиционирования элемента, определяя его отношение к другим элементам.
Частым случаем использования является центрирование всплывающего окна внутри его родителя. Один из способов сделать это — использовать свойства x и y. Якоря предлагают более удобный подход:
Pane {
// ...
Popup {
anchors.centerIn: parent
}
} Также можно центрировать всплывающее окно в окне, используя Overlay:
ApplicationWindow {
id: window
// ...
Pane {
// ...
Popup {
anchors.centerIn: Overlay.overlay
}
}
} Это упрощает центрирование всплывающего окна в окне из любого компонента.
Примечание: Всплывающие окна могут быть центрированы только внутри своего непосредственного родителя или наложения окна; попытка центрирования в других элементах приведет к предупреждению.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также Позиционирование всплывающего окна и якоря.
[только для чтения] availableHeight : real
Это свойство содержит высоту, доступную для contentItem после вычитания вертикальной отступы из height всплывающего окна.
См. также padding, topPadding и bottomPadding.
[только для чтения] availableWidth : real
Это свойство содержит ширину, доступную для contentItem после вычитания горизонтальной отступы из width всплывающего окна.
См. также padding, leftPadding и rightPadding.
background : Item
Это свойство содержит элемент фона.
Примечание: Если элемент фона не имеет явно указанного размера, он автоматически следует за размером всплывающего окна. В большинстве случаев нет необходимости указывать ширину или высоту для элемента фона.
Примечание: Большинство всплывающих окон используют неявный размер элемента фона для расчета неявного размера самого всплывающего окна. Если вы замените элемент фона пользовательским, вам также следует рассмотреть предоставление разумного неявного размера для него (если это не элемент, подобный Image, у которого есть свой неявный размер).
См. также Настройка всплывающего окна.
bottomInset : real
Это свойство содержит нижний отступ для фона.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также Макет всплывающего окна и topInset.
bottomMargin : real
Это свойство содержит расстояние между нижним краем всплывающего окна и нижним краем его окна.
Всплывающее окно с отрицательным нижним отступом не выводится внутри нижнего края содержащего его окна. Значение по умолчанию — -1.
См. также margins, topMargin и Макет всплывающего окна.
bottomPadding : real
Это свойство содержит нижний отступ. Если явно не задано, значение равно verticalPadding.
Свойства отступов используются для управления геометрией элемента содержимого.
Всплывающее окно использует тот же подход к отступам, что и Control. Визуальное объяснение системы отступов можно найти в разделе Макет элемента управления документации.
См. также padding, topPadding, verticalPadding и availableHeight.
clip : bool
Это свойство указывает, включено ли обрезка. Значение по умолчанию — false.
closePolicy : enumeration
Это свойство определяет обстоятельства, при которых всплывающее окно закрывается. Флаги могут быть объединены, чтобы разрешить несколько способов закрытия всплывающего окна.
Доступные значения:
| Константа | Описание |
|---|---|
Popup.NoAutoClose |
Всплывающее окно будет закрываться только при ручном указании. |
Popup.CloseOnPressOutside |
Всплывающее окно будет закрываться, когда нажата кнопка мыши вне его. |
Popup.CloseOnPressOutsideParent |
Всплывающее окно будет закрываться, когда нажата кнопка мыши вне его родительского элемента. |
Popup.CloseOnReleaseOutside |
Всплывающее окно будет закрываться, когда кнопка мыши отпускается вне его. |
Popup.CloseOnReleaseOutsideParent |
Всплывающее окно будет закрываться, когда кнопка мыши отпускается вне его родительского элемента. |
Popup.CloseOnEscape |
Всплывающее окно будет закрываться, когда нажата клавиша Escape, при условии, что у всплывающего окна активный фокус. |
Значение по умолчанию — Popup.CloseOnEscape | Popup.CloseOnPressOutside.
Примечание: Существует известное ограничение, заключающееся в том, что политики Popup.CloseOnReleaseOutside и Popup.CloseOnReleaseOutsideParent работают только со всплывающими окнами modal.
Это свойство содержит список дочерних элементов содержимого.
Список содержит все элементы, объявленные в QML как дочерние элементы всплывающего окна.
Примечание: В отличие от contentData, contentChildren не включает невидимые объекты QML.
См. также Item::children и contentData.
[по умолчанию] contentData : list<Object>
Это свойство содержит список данных содержимого.
Список содержит все объекты, объявленные в QML как дочерние элементы всплывающего окна.
Примечание: В отличие от contentChildren, contentData включает невидимые объекты QML.
См. также Item::data и contentChildren.
contentHeight : real
Это свойство содержит высоту содержимого. Оно используется для расчета общей неявной высоты всплывающего окна.
Для получения дополнительной информации см. Размер всплывающего окна.
См. также contentWidth.
contentItem : Item
Это свойство содержит элемент содержимого всплывающего окна.
Элемент содержимого — это визуальная реализация всплывающего окна. Когда всплывающее окно становится видимым, элемент содержимого автоматически переназначается родительскому элементу overlay item.
Примечание: Элемент содержимого автоматически изменяет размер для подгонки под padding всплывающего окна.
Примечание: Большинство всплывающих окон используют неявный размер элемента содержимого для расчета неявного размера самого всплывающего окна. Если вы замените элемент содержимого пользовательским, вам также следует рассмотреть предоставление разумного неявного размера для него (если это не элемент, подобный Text, у которого есть свой неявный размер).
См. также Настройка всплывающего окна.
contentWidth : real
Это свойство содержит ширину содержимого. Оно используется для расчета общей неявной ширины всплывающего окна.
Для получения дополнительной информации см. Размер всплывающего окна.
См. также contentHeight.
dim : bool
Это свойство указывает, затемняет ли всплывающее окно фон.
Если свойство не установлено явно, оно наследует значение свойства modal. Чтобы вернуться к значению по умолчанию, установите это свойство в значение undefined.
См. также modal и Overlay.modeless.
enabled : bool
Это свойство указывает, включен ли всплывающее окно. Значение по умолчанию равно true.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также visible и Item::enabled.
enter : Transition
Это свойство содержит анимацию, применяемую к элементу всплывающего окна при его открытии.
Следующий пример анимирует непрозрачность всплывающего окна при его открытии:
Popup {
enter: Transition {
NumberAnimation { property: "opacity"; from: 0.0; to: 1.0 }
}
} См. также exit.
exit : Transition
Это свойство содержит анимацию, применяемую к элементу всплывающего окна при его закрытии.
Следующий пример анимирует непрозрачность всплывающего окна при его закрытии:
Popup {
exit: Transition {
NumberAnimation { property: "opacity"; from: 1.0; to: 0.0 }
}
} См. также enter.
focus : bool
Это свойство указывает, хочет ли всплывающее окно фокус.
Когда всплывающее окно получает фокус, свойство activeFocus будет true. Дополнительную информацию см. в разделе Фокус клавиатуры в Qt Quick.
Значение по умолчанию — false.
См. также activeFocus.
font : font
Это свойство содержит шрифт, установленный для всплывающего окна.
Всплывающее окно передает явные свойства шрифта своим дочерним элементам. Если вы измените определённое свойство шрифта всплывающего окна, это свойство будет передано всем дочерним элементам всплывающего окна, переопределяя любые системные значения по умолчанию для этого свойства.
Popup {
font.family: "Courier"
Column {
Label {
text: qsTr("This will use Courier...")
}
Switch {
text: qsTr("... and so will this")
}
}
} См. также Control::font и ApplicationWindow::font.
height : real
Это свойство содержит высоту всплывающего окна.
horizontalPadding : real
Это свойство содержит горизонтальный отступ. Если не задано явно, значение равно padding.
Свойства отступа используются для управления геометрией элемента content item.
Всплывающее окно использует тот же подход к отступам, что и Control. Визуальное объяснение системы отступов см. в разделе Control Layout документации.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также padding, leftPadding, rightPadding и verticalPadding.
[только для чтения] implicitBackgroundHeight : real
Это свойство содержит неявную высоту фона.
Значение равно background ? background.implicitHeight : 0.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также implicitBackgroundWidth и implicitContentHeight.
[только для чтения] implicitBackgroundWidth : real
Это свойство содержит неявную ширину фона.
Значение равно background ? background.implicitWidth : 0.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также implicitBackgroundHeight и implicitContentWidth.
[только для чтения] implicitContentHeight : real
Это свойство содержит неявную высоту содержимого.
Значение вычисляется на основе дочерних элементов содержимого.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также implicitContentWidth и implicitBackgroundHeight.
[только для чтения] implicitContentWidth : real
Это свойство содержит неявную ширину содержимого.
Значение вычисляется на основе дочерних элементов содержимого.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также implicitContentHeight и implicitBackgroundWidth.
implicitHeight : real
Это свойство содержит неявную высоту всплывающего окна.
implicitWidth : real
Это свойство содержит неявную ширину всплывающего окна.
leftInset : real
Это свойство содержит левый отступ фона.
Это свойство было введено в QtQuick.Controls 2.5 (Qt 5.12).
См. также Макет всплывающего окна и rightInset.
leftMargin : real
Это свойство содержит расстояние между левым краем всплывающего окна и левым краем его окна.
Всплывающее окно с отрицательным левым отступом не смещается внутрь левого края содержащего окна. Значение по умолчанию — -1.
См. также margins, rightMargin и Макет всплывающего окна.
leftPadding : real
Это свойство содержит левый отступ. Если не задано явно, значение равно horizontalPadding.
Свойства отступа используются для управления геометрией элемента content item.
Всплывающее окно использует тот же подход к отступам, что и Control. Визуальное объяснение системы отступов см. в разделе Control Layout документации.
См. также padding, rightPadding, horizontalPadding и availableWidth.
locale : Locale
Это свойство содержит локаль всплывающего окна.
См. также mirrored и LayoutMirroring.
margins : real
Это свойство содержит расстояние между краями всплывающего окна и краями его окна.
Всплывающее окно с отрицательными отступами не смещается внутрь границ содержащего окна. Значение по умолчанию — -1.
См. также topMargin, leftMargin, rightMargin, bottomMargin и Макет всплывающего окна.
[только для чтения] mirrored : bool
Это свойство указывает, зеркально отображается ли всплывающее окно.
Это свойство предоставлено для удобства. Всплывающее окно считается зеркально отображенным, если направление его визуального макета — справа налево, то есть при использовании локали справа налево.
Это свойство было введено в QtQuick.Controls 2.3 (Qt 5.10).
См. также locale и Интерфейсы пользователей справа налево.
modal : bool
Это свойство указывает, является ли всплывающее окно модальным.
Модальные всплывающие окна часто имеют отличительный эффект затемнения фона, определённый в Overlay.modal, и не пропускают события нажатия или отпускания к элементам под ними. Например, если пользователь случайно кликнет вне всплывающего окна, любой элемент под этим всплывающим окном в месте клика не получит это событие.
На настольных платформах для закрытия модальных всплывающих окон обычно используется нажатие клавиши Escape. Для этого установите свойство closePolicy в значение Popup.CloseOnEscape. По умолчанию значение closePolicy равно Popup.CloseOnEscape | Popup.CloseOnPressOutside, что означает, что клик вне модального всплывающего окна закроет его.
Значение по умолчанию равно false.
См. также dim.
opacity : real
Это свойство задает непрозрачность всплывающего окна. Непрозрачность задается числом от 0.0 (полностью прозрачное) до 1.0 (полностью непрозрачное). Значение по умолчанию равно 1.0.
См. также visible.
opened : bool
Это свойство указывает, полностью ли открыто всплывающее окно. Всплывающее окно считается открытым, когда оно видимое и ни анимации enter ни exit не выполняются.
Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).
См. также open(), close() и visible.
padding : real
Это свойство задает значение отступа по умолчанию.
Свойства отступа используются для управления геометрией элемента содержимого.
Всплывающее окно использует тот же подход к отступам, что и Control. Для визуального объяснения системы отступов см. раздел Макет элементов управления документации.
См. также availableWidth, availableHeight, topPadding, leftPadding, rightPadding и bottomPadding.
palette : palette
Это свойство содержит палитру, текущую для всплывающего окна.
Всплывающее окно распространяет явные свойства палитры на своих потомков. Если вы измените определенное свойство палитры всплывающего окна, это свойство распространится на всех потомков всплывающего окна, переопределяя любые системные значения по умолчанию для этого свойства.
Popup {
palette.text: "red"
Column {
Label {
text: qsTr("This will use red color...")
}
Switch {
text: qsTr("... and so will this")
}
}
} Это свойство было добавлено в QtQuick.Controls 2.3 (Qt 5.10).
См. также Control::palette, ApplicationWindow::palette и палитры QML Basic Type.
parent : Item
Это свойство содержит родительский элемент.
rightInset : real
Это свойство содержит правый отступ для фона.
Это свойство было добавлено в QtQuick.Controls 2.5 (Qt 5.12).
См. также Макет всплывающего окна и leftInset.
rightMargin : real
Это свойство содержит расстояние между правым краем всплывающего окна и правым краем его окна.
Всплывающее окно с отрицательным правым отступом не выводится внутри правого края окружающего окна. Значение по умолчанию равно -1.
См. также margins, leftMargin и Макет всплывающего окна.
rightPadding : real
Это свойство содержит правый отступ. Если не задано явно, значение равно horizontalPadding.
Свойства отступа используются для управления геометрией элемента содержимого.
Всплывающее окно использует тот же подход к отступам, что и Control. Для визуального объяснения системы отступов см. раздел Макет элементов управления документации.
См. также padding, leftPadding, horizontalPadding и availableWidth.
scale : real
Это свойство содержит коэффициент масштабирования всплывающего окна. Значение по умолчанию равно 1.0.
Масштаб меньше 1.0 приводит к отображению всплывающего окна в меньшем размере, а масштаб больше 1.0 — в большем. Отрицательные масштабы не поддерживаются.
spacing : real
Это свойство содержит расстояние между элементами.
Расстояние полезно для всплывающих окон, содержащих несколько или повторяющихся блоков. Например, некоторые стили используют расстояние для определения расстояния между заголовком, содержимым и подвалом Dialog. Расстояние не накладывается всплывающим окном, поэтому каждый стиль может интерпретировать его по-разному, а некоторые могут его игнорировать.
Это свойство было добавлено в QtQuick.Controls 2.1 (Qt 5.8).
topInset : real
Это свойство содержит верхний отступ для фона.
Это свойство было добавлено в QtQuick.Controls 2.5 (Qt 5.12).
См. также Макет всплывающего окна и bottomInset.
topMargin : real
Это свойство содержит расстояние между верхним краем всплывающего окна и верхним краем его окна.
Всплывающее окно с отрицательным верхним отступом не выводится внутри верхнего края окружающего окна. Значение по умолчанию равно -1.
См. также margins, bottomMargin и Макет всплывающего окна.
topPadding : real
Это свойство содержит верхний отступ. Если не задано явно, значение равно verticalPadding.
Свойства отступа используются для управления геометрией элемента содержимого.
Всплывающее окно использует тот же подход к отступам, что и Control. Для визуального объяснения системы отступов см. раздел Макет элементов управления документации.
См. также padding, bottomPadding, verticalPadding и availableHeight.
transformOrigin : enumeration
Это свойство задает точку начала трансформаций в анимациях открытия и закрытия.
Доступно девять точек начала трансформаций, как показано на изображении ниже. Значение по умолчанию — Popup.Center.
См. также enter, exit и Item::transformOrigin.
verticalPadding : real
Это свойство задаёт вертикальный отступ. Если не задано явно, значение равно padding.
Свойства отступа используются для управления геометрией элемента содержимого.
Всплывающее окно использует тот же подход к отступам, что и Control. Для визуального объяснения системы отступов см. раздел Макет элементов управления документации.
Это свойство было добавлено в QtQuick.Controls 2.5 (Qt 5.12).
См. также padding, topPadding, bottomPadding и horizontalPadding.
visible : bool
Это свойство указывает, видно ли всплывающее окно. Значение по умолчанию равно false.
См. также open(), close() и opened.
width : real
Это свойство содержит ширину всплывающего окна.
x : real
Это свойство содержит координату x всплывающего окна.
y : real
Это свойство содержит координату y всплывающего окна.
z : real
Это свойство содержит значение z всплывающего окна. Значение z определяет порядок наложения всплывающих окон.
Если два видимых всплывающих окна имеют одинаковое значение z, последнее открытое окно будет расположено сверху.
Значение z по умолчанию равно 0.
Документация сигналов
void aboutToHide()
Этот сигнал испускается, когда всплывающее окно собирается скрыть.
См. также closed().
void aboutToShow()
Этот сигнал испускается, когда всплывающее окно собирается показать.
См. также opened().
void closed()
Этот сигнал испускается, когда всплывающее окно закрыто.
См. также aboutToHide().
void opened()
Этот сигнал испускается, когда всплывающее окно открыто.
См. также aboutToShow().
Документация методов
void close()
Закрывает всплывающее окно.
См. также visible.
forceActiveFocus(enumeration reason = Qt.OtherFocusReason)
Принудительно устанавливает активный фокус на всплывающее окно с заданным значением reason.
Этот метод устанавливает фокус на всплывающее окно и гарантирует, что все родительские объекты FocusScope в иерархии объектов также получат focus.
См. также activeFocus и Qt::FocusReason.
void open()
Открывает всплывающее окно.
См. также visible.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.14/qml-qtquick-controls2-popup.html