想象风格
“Imagine”风格基于可配置的图像资源。更多...
| 导入语句: | import QtQuick.Controls.Imagine |
| 自: | Qt 5.10 |
关联属性
- path: 字符串
详细说明
“Imagine”样式基于图像资源。该样式自带一组默认图像,但您可以通过提供一个遵循预定义命名规范的图像目录来轻松更换这些图像。

采用默认图片的“Imagine”样式
若要运行采用 Imagine 样式的应用程序,请参阅《Qt Quick Controls 》中的“使用样式”部分。
文件名
图像文件的命名遵循以下规则:
<control>-<element>-<states>
<control> 和<element> 部分是必填的,但<states> 部分是可选的。例如,如果为Button 提供了一个名为"button-background.9.png" 的文件,该文件将用于Button 支持的所有状态。开发者可以自行决定为哪些状态提供图片。 不过,建议尽可能为最常见的控件状态提供图片,例如disabled 、pressed 等。这样可以确保交互式控件在视觉上的表现符合最终用户的预期。
元素参考
下表列出了每个控件支持的元素,以及该元素的可能状态和所需的文件扩展名。元素是指代表控件特定视觉部分的图像。例如,Button 的"background" 元素代表其background 。
| 控件 | 元素 | 状态 | 扩展名 |
|---|---|---|---|
| ApplicationWindow | 背景 | 活动 | .9.png(或 .png) |
| BusyIndicator | 动画 | 已禁用、正在运行、镜像、悬停 | .webp |
| 背景 | 与上同 | .webp | |
| Button | 背景 | 禁用、按下、已选中、可选中、获得焦点、高亮、扁平化、镜像、悬停 | .9.png |
| CheckBox | 背景 | 禁用、按下、已选中、部分选中、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 指示器 | 同上 | .png | |
| CheckDelegate | 背景 | 禁用、按下、选中、部分选中、获得焦点、高亮、镜像、悬停 | .9.png(或 .png) |
| 指示器 | 同上 | .png | |
| ComboBox | 背景 | 禁用、按下、可编辑、打开、获得焦点、镜像、悬停、扁平化 | .9.png(或 .png) |
| 指示器 | 同上 | .png | |
| 弹出窗口 | 同上 | .9.png(或 .png) | |
| DelayButton | 背景 | 禁用、按下、已选中、可选中、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 进度 | 同上 | .9.png(或 .png) | |
| 遮罩 | 与上文相同 | .9.png(或 .png) | |
| Dial | 背景1 | 禁用、按下、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 手柄 | 同上 | .9.png(或 .png) | |
| Dialog | 背景 | 模态框,变暗 | .9.png(或 .png) |
| 标题 | 同上 | .9.png(或 .png) | |
| 叠加层 | 模态 | .9.png(或 .png) | |
| DialogButtonBox | 背景 | 禁用、镜像 | .9.png(或 .png) |
| Drawer | 背景 | 模态、变暗、顶部、左侧、右侧、底部 | .9.png(或 .png) |
| 叠加层 | 模态 | .9.png(或 .png) | |
| Frame | 背景 | 禁用、镜像 | .9.png(或 .png) |
| GroupBox | 背景 | 已禁用,镜像 | .9.png(或 .png) |
| 标题 | 与上同 | .9.png(或 .png) | |
| ItemDelegate | 背景 | 禁用、按下、获得焦点、高亮、镜像、悬停 | .9.png(或 .png) |
| Label | 背景 | 禁用、镜像、悬停 | .9.png(或 .png) |
| Menu | 背景 | 模态窗口、变暗 | .9.png(或 .png) |
| 叠加层 | 模态 | .9.png(或 .png) | |
| MenuItem | 箭头 | 禁用、按下、选中、获得焦点、高亮、镜像、悬停 | .png |
| 背景 | 同上 | .9.png(或 .png) | |
| 指示器 | 与上同 | .png | |
| MenuSeparator | 背景 | 已禁用,镜像显示 | .9.png(或 .png) |
| 分隔线 | 与上同 | .9.png(或 .png) | |
| Page | 背景 | 已禁用,镜像显示 | .9.png(或 .png) |
| PageIndicator | 背景 | 已禁用、镜像、悬停 | .9.png(或 .png) |
| 委托 | 禁用、按下、当前、镜像、悬停 | .png | |
| Pane | 背景 | 禁用、镜像 | .9.png(或 .png) |
| Popup | 背景 | 模态窗口,变暗 | .9.png(或 .png) |
| 叠加层 | 模态 | .9.png(或 .png) | |
| ProgressBar | 动画 | 禁用、镜像、悬停 | .png |
| 背景 | 禁用、未指定、镜像、悬停 | .9.png(或 .png) | |
| 遮罩 | 同上 | .9.png(或 .png) | |
| 进度 | 同上 | .9.png(或 .png) | |
| RadioButton | 背景 | 禁用、按下、选中、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 指示器 | 同上 | .png | |
| RadioDelegate | 背景 | 禁用、按下、选中、获得焦点、高亮、镜像、悬停 | .9.png(或 .png) |
| 指示器 | 同上 | .png | |
| RangeSlider | 背景 | 垂直、水平、禁用、聚焦、镜像、悬停 | .9.png(或 .png) |
| RangeSlider | 进度 | 同上 | .9.png(或 .png) |
| 控件 | 第一、第二、垂直、水平、禁用、按下、获得焦点、镜像、悬停 | .png | |
| RoundButton | 背景 | 禁用、按下、已选中、可选中、获得焦点、高亮、扁平化、镜像、悬停 | .9.png(或 .png) |
| ScrollBar | 背景 | 垂直、水平、禁用、交互式、按下、镜像、悬停 | .9.png(或 .png) |
| 控件手柄 | 同上 | .9.png(或 .png) | |
| ScrollIndicator | 背景 | 垂直、水平、禁用、镜像、悬停 | .9.png(或 .png) |
| 手柄 | 同上 | .9.png(或 .png) | |
| ScrollView | 背景 | 禁用,镜像 | .9.png(或 .png) |
| Slider | 背景 | 垂直、水平、禁用、按下、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 控件 | 同上 | .9.png(或 .png) | |
| 进度 | 同上 | .9.png(或 .png) | |
| SpinBox | 背景 | 禁用、可编辑、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 编辑器 | 禁用、获得焦点、镜像、悬停 | .9.png(或 .png) | |
| 指示器 | 向上、向下、禁用、可编辑、按下、获得焦点、镜像、悬停 | .9.png(或 .png) | |
| StackView | 背景 | 禁用、镜像 | .9.png(或 .png) |
| SwipeDelegate | 背景 | 禁用、按下、获得焦点、高亮、镜像、悬停 | .9.png(或 .png) |
| SwipeView | 背景 | 垂直、水平、禁用、交互、获得焦点、镜像 | .9.png(或 .png) |
| Switch | 背景 | 禁用、按下、选中、获得焦点、镜像、悬停 | .9.png(或 .png) |
| 控件手柄 | 同上 | .9.png(或 .png) | |
| 指示器 | 同上 | .9.png(或 .png) | |
| SwitchDelegate | 背景 | 禁用、按下、选中、获得焦点、突出显示、镜像、悬停 | .9.png(或 .png) |
| 手柄 | 同上 | .9.png(或 .png) | |
| 指示器 | 同上 | .9.png(或 .png) | |
| TabBar | 背景 | 禁用、页眉、页脚、镜像 | .9.png(或 .png) |
| TabButton | 背景 | 禁用、按下、选中、聚焦、镜像、悬停 | .9.png(或 .png) |
| TextArea | 背景 | 禁用、获得焦点、镜像、悬停 | .9.png(或 .png) |
| TextField | 背景 | 禁用、获得焦点、镜像、悬停 | .9.png(或 .png) |
| ToolBar | 背景 | 禁用、页眉、页脚、镜像 | .9.png(或 .png) |
| ToolButton | 背景 | 禁用、按下、已选中、可选中、获得焦点、高亮、扁平化、镜像、悬停 | .9.png(或 .png) |
| ToolSeparator | 背景 | 垂直、水平、禁用、镜像 | .9.png(或 .png) |
| 分隔线 | 同上 | .9.png(或 .png) | |
| ToolTip | 背景 | .9.png(或 .png) | |
| Tumbler | 背景 | 禁用、获得焦点、镜像、悬停 | .9.png(或 .png) |
注意: 1) “Imagine”样式的旋钮目前尚不支持 Qt 6.6 中引入的 `startAngle ` 和 `endAngle ` 属性,而是使用固定的背景图像。
资源示例
下表列出了所有控件的资源示例(摘自默认的“Imagine”样式资源)。由于并非所有元素都需要资源,因此该列表并非详尽无遗,但可作为您创建自有资源时的参考指南。
| 控件 | 元素 | 状态 | 资产 | 备注 |
|---|---|---|---|---|
| ApplicationWindow | 背景 |
| 参见脚注 1 | |
| 叠加层 |
| 参见脚注 1 | ||
| 叠加 | 模态 |
| 参见脚注 1 | |
| Button | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 聚焦 |
| ||
| 背景 | 按下的 |
| ||
| 背景 | 带格纹的 |
| ||
| 背景 | 已选中,已禁用 |
| ||
| 背景 | 已选中,获得焦点 |
| ||
| 背景 | 已选中,悬停时 |
| ||
| 背景 | 高亮显示 |
| ||
| 背景 | 高亮显示,禁用 |
| ||
| 背景 | 高亮显示,焦点所在 |
| ||
| 背景 | 高亮显示,鼠标悬停时 |
| ||
| 背景 | 高亮、按下时 |
| ||
| 背景 | 高亮显示,已选中 |
| ||
| 背景 | 悬停时 |
| ||
| 背景 | 扁平化 |
| ||
| 背景 | 平坦,禁用 |
| ||
| 背景 | 平滑,悬停 |
| ||
| 背景 | 平滑,按下时 |
| ||
| 背景 | 纯色、格纹 |
| ||
| CheckBox | 指示器 |
| ||
| 指示器 | 已禁用 |
| ||
| 指示器 | 已按下 |
| ||
| 指示灯 | 已选中 |
| ||
| 指示灯 | 已选中、已按下 |
| ||
| 指示器 | 已选中,悬停 |
| ||
| 指示符 | 已选中、获得焦点 |
| ||
| 指示符 | 部分选中 |
| ||
| 指示灯 | 部分,已选中,已按下 |
| ||
| 指示器 | 部分、已选中、聚焦 |
| ||
| 指示器 | 部分显示、已选中、悬停 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示符 | 悬停 |
| ||
| CheckDelegate | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 已按 |
| ||
| 背景 | 聚焦 |
| ||
| 背景 | 悬停时 |
| ||
| 指示器 |
| |||
| 指示器 | 已禁用 |
| ||
| 指示器 | 已按下 |
| ||
| 指示灯 | 已选中 |
| ||
| 指示灯 | 已选中,已按下 |
| ||
| 指示符 | 已选中,焦点 |
| ||
| 指示符 | 已选中,悬停 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示符 | 悬停 |
| ||
| 指示器 | 部分选中 |
| ||
| 指示灯 | 部分,已选中,已按下 |
| ||
| 指示灯 | 部分选中,已选中,聚焦 |
| ||
| 指示器 | 部分显示、已选中、悬停 |
| ||
| 指示器 | 悬停 |
| ||
| ComboBox | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 聚焦 |
| ||
| 背景 | 悬停 |
| ||
| 背景 | 按下时 |
| ||
| 背景 | 打开 |
| ||
| background | 可编辑 |
| ||
| 背景 | 可编辑,处于焦点状态 |
| ||
| 背景 | 可编辑,禁用 |
| ||
| 指示器 |
| |||
| 指示器 | 禁用 |
| ||
| 指示器 | 可编辑 |
| ||
| 指示器指示器 | 可编辑、禁用 |
| ||
| 指示器 | 可编辑,镜像 |
| ||
| 指示器 | 可编辑、镜像、禁用 |
| ||
| 弹出窗口 |
| |||
| DelayButton | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 禁用,已选中 |
| ||
| 背景 | 获得焦点时 |
| ||
| 背景 | 被按下 |
| ||
| 背景 | 已选中 |
| ||
| 背景 | 已选中、获得焦点 |
| ||
| 背景 | 已选中,悬停时 |
| ||
| 背景 | 悬停时 |
| ||
| 进度 |
| |||
| 进度 | 禁用 |
| ||
| 遮罩 |
| |||
| Dial | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 聚焦 |
| ||
| 控件 |
| |||
| 控件 | 已禁用 |
| ||
| 控件 | 获得焦点 |
| ||
| 控件 | 获得焦点,被按下 |
| ||
| 控件 | 已聚焦,悬停 |
| ||
| 控件 | 已按下 |
| ||
| 控件 | 悬停 |
| ||
| Dialog | 背景 |
| ||
| 叠加层 |
| 参见脚注 1 | ||
| 叠加 | 模态 |
| 参见脚注 1 | |
| DialogButtonBox | background |
| ||
| Drawer | background | left |
| |
| background | 右侧 |
| ||
| 背景 | 顶部 |
| ||
| 背景 | 底部 |
| ||
| 叠加层 |
| 参见脚注 1 | ||
| 叠加层 | 模态 |
| 参见脚注 1 | |
| Frame | background |
| ||
| GroupBox | background |
| ||
| 标题 |
| |||
| ItemDelegate | background |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 已按 |
| ||
| 背景 | 获得焦点 |
| ||
| 背景 | 悬停 |
| ||
| 背景 | 高亮 |
| ||
| Menu | 背景 |
| ||
| MenuItem | 背景 |
| ||
| 背景 | 突出显示 |
| ||
| 箭头 |
| |||
| 箭头 | 镜像 |
| ||
| 箭头 | 已禁用 |
| ||
| 箭头 | 镜像、禁用 |
| ||
| 指示器 |
| |||
| 指示器 | 已禁用 |
| ||
| 指示灯 | 被按下 |
| ||
| 指示器 | 已选中 |
| ||
| 指示器 | 已选中,已按下 |
| ||
| 指示符 | 已选中,处于焦点状态 |
| ||
| 指示符 | 已选中,悬停 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示符 | 悬停 |
| ||
| MenuSeparator | 分隔线 |
| ||
| Page | 背景 |
| 参见脚注 1 | |
| PageIndicator | 委托 |
| ||
| 委托 | 已禁用 |
| ||
| 代表代表 | 已停用,当前 |
| ||
| 代表 | 已按 |
| ||
| 委托人 | 当前 |
| ||
| Pane | 背景 |
| ||
| Popup | 背景 |
| 参见脚注 1 | |
| 叠加层 |
| 参见脚注 1 | ||
| 叠加层 | 模态 |
| ||
| ProgressBar | 背景 |
| ||
| 进度 |
| |||
| 遮罩 |
| |||
| RadioButton | 指示器 |
| ||
| 指示器 | 已禁用 |
| ||
| 指示器 | 已按 |
| ||
| 指示器 | 已选中 |
| ||
| 指示符 | 已选中,处于焦点状态 |
| ||
| 指示符 | 已选中,悬停 |
| ||
| 指示符 | 已选中,被按下 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示符 | 悬停 |
| ||
| RadioDelegate | 背景 |
| ||
| 背景 | 禁用 |
| ||
| 背景 | 按下 |
| ||
| 背景 | 获得焦点时 |
| ||
| 背景 | 悬停 |
| ||
| 指示器 |
| |||
| 指示器 | 禁用 |
| ||
| 指示器 | 已按 |
| ||
| 指示灯 | 已选中 |
| ||
| 指示符 | 已选中,处于焦点状态 |
| ||
| 指示符 | 已选中,悬停 |
| ||
| 指示符 | 已选中,被按下 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示符 | 悬停 |
| ||
| RangeSlider | 背景 | 垂直 |
| |
| 背景 | 水平 |
| ||
| 进度 | 垂直 |
| ||
| 进度 | 垂直,禁用 |
| ||
| 进度 | 水平 |
| ||
| 进度 | 水平,已禁用 |
| ||
| 控件 |
| |||
| 控件 | 已禁用 |
| ||
| 控件 | 获得焦点 |
| ||
| 控件 | 获得焦点、悬停 |
| ||
| 控件 | 获得焦点、被按下 |
| ||
| 控件 | 悬停 |
| ||
| 控件 | 已按 |
| ||
| RoundButton | 背景 |
| ||
| 背景 | 禁用 |
| ||
| 背景 | 已禁用,已选中 |
| ||
| 背景 | 获得焦点 |
| ||
| 背景 | 被按下 |
| ||
| 背景 | 已选中 |
| ||
| 背景 | 已选中、获得焦点 |
| ||
| 背景 | 已选中,悬停时 |
| ||
| 背景 | 高亮 |
| ||
| 背景 | 高亮、按下时 |
| ||
| 背景 | 高亮显示,聚焦 |
| ||
| 背景 | 高亮显示,悬停时 |
| ||
| 背景 | 悬停 |
| ||
| ScrollBar | 控件 |
| ||
| 控件 | 禁用 |
| ||
| 控件 | 交互式 |
| ||
| 控件 | 交互式,禁用 |
| ||
| 处理 | 交互式,已按下 |
| ||
| 控件 | 交互式,悬停 |
| ||
| ScrollIndicator | 控件 |
| ||
| Slider | 背景 | 垂直 |
| |
| 背景 | 水平 |
| ||
| 进度 | 垂直 |
| ||
| 进度 | 垂直,已禁用 |
| ||
| 进度 | 水平 |
| ||
| 进度 | 水平,已禁用 |
| ||
| 控件 |
| |||
| 控件 | 已禁用 |
| ||
| 控件 | 获得焦点 |
| ||
| 控件 | 聚焦、悬停 |
| ||
| 控件 | 获得焦点、被按下 |
| ||
| 控件 | 悬停 |
| ||
| 手柄 | 被按下 |
| ||
| SpinBox | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 聚焦 |
| ||
| 背景 | 可编辑 |
| ||
| 指示器 | 向上 |
| ||
| 指示器 | 向上,已禁用 |
| ||
| 指示器 | 向上,按下 |
| ||
| 指示灯 | 向上,获得焦点 |
| ||
| 指示灯 | 向上,镜像 |
| ||
| 指示器 | 向上,悬停 |
| ||
| 指示器 | 向上,可编辑 |
| ||
| 指示器 | 向上,可编辑,被按下 |
| ||
| 指示器 | 向上、可编辑、获得焦点 |
| ||
| 指示符 | 向上、可编辑、镜像 |
| ||
| 指示器 | 向上、可编辑、悬停 |
| ||
| 指示器 | 向下 |
| ||
| 指示器 | 向下,已禁用 |
| ||
| 指示器 | 向下,被按下 |
| ||
| 指示器 | 向下,获得焦点 |
| ||
| 指示灯 | 向下,镜像 |
| ||
| 指示器 | 向下,悬停 |
| ||
| 指示器 | 向下,可编辑 |
| ||
| 指示器 | 向下,可编辑,被按下 |
| ||
| 指示器 | 下拉、可编辑、获得焦点 |
| ||
| 指示符 | 向下、可编辑、镜像 |
| ||
| 指示器 | 向下、可编辑、悬停 |
| ||
| SwipeDelegate | 背景 |
| ||
| 背景 | 禁用 |
| ||
| 背景 | 已按 |
| ||
| 背景 | 聚焦 |
| ||
| 背景 | 悬停 |
| ||
| Switch | 指示器 |
| ||
| 指示器 | 已禁用 |
| ||
| 指示器 | 已按下 |
| ||
| 指示灯 | 已选中 |
| ||
| 指示灯 | 已选中,焦点在该选项上 |
| ||
| 指示符 | 已选中,悬停 |
| ||
| 指示器 | 已选中、已点击 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示符 | 悬停 |
| ||
| 控件 |
| |||
| 控件 | 禁用 |
| ||
| 处理 | 按下 |
| ||
| SwitchDelegate | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 已按 |
| ||
| 背景 | 聚焦 |
| ||
| 背景 | 悬停 |
| ||
| 指示器 |
| |||
| 指示器 | 已禁用 |
| ||
| 指示器 | 已按下 |
| ||
| 指示灯 | 已选中 |
| ||
| 指示灯 | 已选中,处于焦点状态 |
| ||
| 指示符 | 已选中、悬停 |
| ||
| 指示符 | 已选中,已按下 |
| ||
| 指示符 | 获得焦点 |
| ||
| 指示器 | 悬停 |
| ||
| 控件 |
| |||
| 控件 | 禁用 |
| ||
| TabBar | 背景 |
| ||
| TabButton | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 已按 |
| ||
| 背景 | 带格纹的 |
| ||
| 背景 | 悬停时 |
| ||
| 背景 | 禁用,选中 |
| ||
| TextArea | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 聚焦 |
| ||
| TextField | 背景 |
| ||
| 背景 | 已禁用 |
| ||
| 背景 | 聚焦 |
| ||
| ToolBar | 背景 |
| ||
| ToolButton | 背景 |
| ||
| 背景 | 已禁用,已选中 |
| ||
| 背景 | 获得焦点 |
| ||
| 背景 | 按下的 |
| ||
| 背景 | 带方格的 |
| ||
| 背景 | 已选中、处于焦点状态 |
| ||
| 背景 | 已选中,悬停时 |
| ||
| 背景 | 悬停时 |
| ||
| ToolSeparator | 分隔线 | 水平 |
| |
| 分隔符 | 垂直 |
| ||
| ToolTip | 背景 |
|
1一张1x1的单色图像,被拉伸以填满控件。
9-Patch 图像
“Imagine”样式使用9-Patch图像,以便让设计师能够控制特定元素在调整大小时的响应方式。以下是一个9-Patch图像的示例,它表示Button 的background ,旁边是其放大版本(以便更清楚地看到9-Patch分隔线):

该图像的内容宽 44 像素,高 32 像素。每个 9-patch 图像都需要在每边周围添加一条 1 像素宽的线(统称为“9-patch 线”),因此图像的实际尺寸变为宽 46 像素、高 34 像素。 请注意,无论图像的目标 DPI 是多少,9-patch 线条的宽度都必须为 1 像素。例如,button-background.9.png 和 button-background@2x.9.png 的 9-patch 线条都必须为 1 像素宽。
9-patch 边框必须为黑色,其余区域必须为透明或白色:

可拉伸区域
顶部和左侧边缘的 9-patch 线条决定了图像在调整大小时哪些部分会被拉伸。
以下是9-patch图像按不同比例调整为原尺寸1.5倍时的示例:

请注意,圆角部分保持了原始大小,因为它们位于这些线条的范围之外。
填充区域
右侧和底部边缘的9-patch线条决定了控件的contentItem 可用的空间大小,这意味着它也可以被视为控制着padding 。有关填充的示意图,请参见Control Layout 。
下面是更多关于9-patch图像调整大小的示例,但这次将演示填充9-patch线是如何起作用的。

contentItem 可以在阴影区域内占据所需的空间。如果省略填充线,contentItem 将占据所需空间,但不会超出可拉伸区域。
内嵌区域
在某些情况下,控件需要添加阴影效果,例如。但是,如果我们向上面的按钮添加阴影,这会影响其大小,从而给布局以及鼠标/触摸输入边界带来问题。
内边距区域通过告知控件,9-patch 图像的特定区域应位于控件外部,从而解决了这一问题:

在下图中,虚线代表按钮的可点击区域,以及它在布局中占用的空间。阴影则由其后面的条纹区域标出:

导出 9-Patch 图像
可以使用各种矢量和位图编辑器来创建适用于 Imagine 样式的 9-Patch 图像。以下各节简要介绍了每种编辑器的导出过程,最后一节则说明了如何确保导出的图像符合 9-Patch 规范。
Affinity Designer
请参阅 Affinity的“导出设置”文档。
Adobe Illustrator
请参阅 Adobe 的“资源导出”面板文档。
Adobe Photoshop
请参阅 Adobe 的“从图层生成图像资源”文档。
Inkscape
可使用Inkscape 9-Patch 导出扩展来通过 Inkscape 导出资源。
Sketch
请参阅 Sketch的“导出”文档。
Qt Quick Controls 还提供了一个 Sketch插件,可在资源导出后自动修正 9-patch 线的粗细。要安装此文件,请双击它。一旦 Sketch 确认 9-patch 导出插件已安装,该插件将在导出图像时自动进行处理。
修复 9-Patch 线条
在导出多种 DPI 变体(@2x 、@3x 等)的 9-patch 图像时,9-patch 线条通常会随图像一起被放大。 有多种方法可以解决此问题,但最简单的方法可能是使用ImageMagick 的 mogrify工具。该工具具有-shave 功能,可用于裁剪图像以减小 9-patch 线的粗细:
mogrify -shave 1x1 -path path/to/images *@2x.9.png
mogrify -shave 2x2 -path path/to/images *@3x.9.png
mogrify -shave 3x3 -path path/to/images *@4x.9.png常规DPI的图像(即没有@Nx 前缀的图像)不受此影响,因此只需对 intended for high DPI displays 的图像运行该命令即可。
动画图像
“Imagine”样式支持WebP和GIF动画图像格式。
自定义
路径
“Imagine”样式允许自定义用于选择图像资源的路径。 该路径可针对任何窗口或控件进行指定,并会像fonts 一样自动传递给子元素。在下面的示例中,窗口和所有三个单选按钮均显示深色图像资源(位于“qrc:/themes/dark”中的文件)。
|
|
除了在 QML 中指定路径外,还可以通过环境变量或在配置文件中指定路径。在 QML 中指定的属性优先于所有其他方法。
配置文件
| 变量 | 描述 |
|---|---|
Path | 指定包含 Imagine 样式资源的目录路径。如果未指定,则使用内置资源。 例如,要指定存储在资源系统中的目录路径: 要指定本地目录的相对路径: 注意:由于 技术限制,如果路径是相对于 |
有关配置文件的更多详细信息,请参阅《Qt Quick Controls 配置文件》。
环境变量
| 变量 | 描述 |
|---|---|
QT_QUICK_CONTROLS_IMAGINE_PATH | 指定包含 Imagine 样式资源的目录路径。若未指定,则使用内置资源。 例如,要指定存储在资源系统中的目录路径: 要指定本地目录的相对路径: 注意:由于 技术限制,如果路径是相对于 |
QT_QUICK_CONTROLS_IMAGINE_SMOOTH | 将该环境变量设置为1 ,可启用 9-patch 图片的平滑缩放功能。此环境变量自 Qt 6.5 起新增。 |
有关支持的环境变量的完整列表,请参阅 Qt Quick Controls 中的“支持的环境变量”。
调色板
Imagine 样式支持通过palette 属性以及qtquickcontrols2.conf文件自定义配色方案。 与其他样式一样,Imagine样式使用的具体palette roles 取决于样式本身。不过,由于控件的大部分视觉外观(例如背景)是通过图像资源管理的,因此只有通常用于文本的 才会产生影响。
字体
依赖关系
必须单独导入 Imagine 样式,才能使用 Imagine 样式特有的属性。需要注意的是,无论是否引用了 Imagine 样式,相同的应用程序代码在任何其他样式下均可运行。Imagine 特有的属性仅在应用程序以 Imagine 样式运行时才生效。
如果将 Imagine 样式导入到一个始终加载的 QML 文件中,则必须将 Imagine 样式与应用程序一同部署,这样无论应用程序使用哪种样式运行,都能正常运行。通过使用文件选择器,可以在不与样式建立硬依赖关系的情况下应用特定于样式的调整。
附加属性文档
Imagine.path:字符串 |
此附加属性保存了图像资源的路径……
Button {
Imagine.path: "qrc:/themes/dark"
}相关信息
© 2026 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.






































































































































































































































































































