框架
RinUI 中的 Frame 组件是一个带样式的容器,继承自 QtQuick.Controls.Basic.Frame。它提供可自定义的背景,具有颜色、边框和圆角半径属性,并包含可选的悬停效果。它通常用作其他组件的基础或用于将相关 UI 元素与通用视觉样式分组。默认情况下,clip 设置为 true。
基本框架
Frame 可用于直观地对内容进行分组。您可以将子项直接放置在 Frame 内;这些子项将成为 Frame 的 contentItem 的父项。标准填充属性可用于在框架边缘及其内容之间创建空间。

qml
import QtQuick 2.15
import RinUI
// ...
Frame {
width: 200
height: 150
padding: 10 // 内容放置在此填充内
// 自定义外观属性
color: Theme.currentTheme.colors.subtleSecondaryColor // 背景颜色
radius: 8 // 圆角半径
borderColor: Qt.rgba(0, 0, 0, 0.1) // 边框颜色
borderWidth: 1 // 边框宽度
Text {
anchors.centerIn: parent // 相对于 contentItem 区域锚定
text: qsTr("Content inside a Frame")
}
}无边框模式
将 frameless 属性设置为 true,以使 Frame 的可见背景(颜色和边框)消失。Frame 本身仍然作为布局容器存在,如果 clip 为 true,则将继续裁剪其内容。这对于分组和裁剪而不添加视觉装饰非常有用。
悬停效果
如果 hoverable 为 true(默认值),则鼠标悬停时 Frame 背景的不透明度会略有变化,提供视觉反馈。hover 属性可用于对此状态做出反应。
主要属性
color:color- 框架的背景颜色。默认为Theme.currentTheme.colors.cardColor。radius:real(背景Rectangle的radius别名) - 框架背景的圆角半径。默认为Theme.currentTheme.appearance.smallRadius。borderColor:color- 框架边框的颜色。默认为Theme.currentTheme.colors.cardBorderColor。borderWidth:int- 框架边框的宽度。默认为Theme.currentTheme.appearance.borderWidth。frameless:bool- 如果为true,则背景矩形(显示颜色和边框)不可见。默认为false。hoverable:bool- 如果为true,则在背景上启用悬停检测和视觉反馈(不透明度更改)。默认为true。hover:bool(只读) - 指示鼠标当前是否悬停在框架上(前提是hoverable为true)。clip:bool- (继承自Item,在 RinUI 的Frame中默认为true) 确定子项是否被裁剪到框架的边界。
继承自 QtQuick.Controls.Basic.Frame:
contentItem:Item- 子项的实际容器。在 QML 中声明为Frame直接子项的子项会自动重新父化到此contentItem。- Padding 属性 (
padding,topPadding,leftPadding,rightPadding,horizontalPadding,verticalPadding) - 这些属性控制框架外边缘和contentItem之间的空间。
用作基础组件
RinUI 利用 Frame 作为其他组件的基础构建块。例如:
SettingItem继承自Frame,为设置页面中的各个行提供一致的结构。Clip组件内部使用Frame作为其带样式的背景。
这展示了 Frame 在创建具有一致主题的带样式容器方面的实用性。