SafeArea QML Type
用于访问项目或窗口的安全区域属性。更多
Import Statement: | import QtQuick |
Since: | Qt 6.9 |
属性
- additionalMargins
- additionalMargins.bottom : real
- additionalMargins.left : real
- additionalMargins.right : real
- additionalMargins.top : real
- margins
- margins.bottom : real
- margins.left : real
- margins.right : real
- margins.top : real
详细说明
SafeArea 附件类型提供了有关项目或窗口中内容可能被其他 UI 元素(如系统标题栏或状态栏)重叠的区域的信息。
该信息可用于在项目的安全区域内布局项目的子项,同时仍允许背景颜色或效果横跨整个项目。
Rectangle { id: parentItem gradient: Gradient.SunnyMorning anchors.fill: parent Rectangle { id: childItem gradient: Gradient.DustyGrass anchors { fill: parent topMargin: parent.SafeArea.margins.top leftMargin: parent.SafeArea.margins.left rightMargin: parent.SafeArea.margins.right bottomMargin: parent.SafeArea.margins.bottom } } } | ![]() |
安全区域边距是相对于其所依附的项目而言的。如果祖先项目已在安全区域边距内布局其子项目,那么任何附加了自己安全区域的子项目都将报告零边距,除非已添加additional margins 。
注意: 项不应根据其自身的安全区域进行定位,否则会导致绑定循环。
附加边距
有时,一个项目的布局会涉及到相互重叠的子项目,例如,在一个带有半透明标题的窗口中,窗口内容的其余部分都位于标题下方。
在这种情况下,项目可通过additionalMargins 属性向子项目反映页眉的位置和大小。
额外的边距将被添加到项目已从其父层次结构中获取的任何边距(包括系统边距,如标题栏或状态栏)中,子项目将反映相应的组合边距。
Rectangle { id: parentItem gradient: Gradient.SunnyMorning anchors.fill: parent Rectangle { id: headerItem width: parent.width height: 80 gradient: Gradient.WinterNeva z: 1 } Item { id: contentItem anchors.fill: parent z: 0 SafeArea.additionalMargins.top: headerItem.height - parent.SafeArea.margins.top Rectangle { id: childItem gradient: Gradient.DustyGrass anchors { fill: parent topMargin: parent.SafeArea.margins.top leftMargin: parent.SafeArea.margins.left rightMargin: parent.SafeArea.margins.right bottomMargin: parent.SafeArea.margins.bottom } } } } | ![]() |
在上面的示例中,页眉项目位于窗口顶部,有可能与来自窗口的现有安全区域边距重叠。为此,我们只为超出窗口安全区域边距的页眉部分添加额外边距。
注: 在本例中,页眉项目不会与子项目重叠,因为我们的目的是展示项目是如何根据安全区域边距的变化进行定位和调整大小的。
控件
在控件中应用安全区域边距非常简单,因为控件已经提供了为控件内容项添加填充的属性。
Control { anchors.fill: parent background: Rectangle { gradient: Gradient.SunnyMorning } topPadding: SafeArea.margins.top leftPadding: SafeArea.margins.left rightPadding: SafeArea.margins.right bottomPadding: SafeArea.margins.bottom contentItem: Rectangle { gradient: Gradient.DustyGrass } }
属性文档
该属性用于保存项目的附加安全区域边距。
附加安全区域边距不能为负值,并将自动箝位为 0。
项目的安全区域边距是继承边距(例如来自标题栏或状态栏)和应用于项目的附加边距的总和。
另请参阅 margins 。
该属性保存相对于附加项目的安全区域边距。
另请参阅 additionalMargins 。
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.