组件
ShadcnIcon / IconRegistry
lucide 图标:本地 74 精选 + 远程兜底,随主题变色。
![]()
C++ IconRegistry(QML singleton)+ QML ShadcnIcon。本地精选 74 个 lucide 图标(打包进 .qrc),未命中时按需从 CDN 拉取并缓存;currentColor 动态替换实现随主题变色。
用法
// 基础:默认跟随主题正文色
ShadcnIcon { name: "check"; size: 16 }
// 指定颜色(随主题切换自动刷新)
ShadcnIcon { name: "trash-2"; color: theme.destructive }
// 按钮内嵌图标
ShadcnButton { text: qsTr("删除"); iconName: "trash-2" }
属性
| 属性 | 类型 | 说明 |
|---|---|---|
name | string | 图标名(lucide 命名,见 IconRegistry.names) |
size | int | 显示尺寸(默认 24 = lucide 设计尺寸) |
color | color | 颜色(默认 theme.foreground) |
IconRegistry(QML singleton)
| 成员 | 说明 |
|---|---|
names | 已注册图标名列表(本地内置,QML 里可直接当 model) |
has(name) | 本地是否内置 |
dataUrl(name, color) | 生成 data:image/svg+xml;base64(替换 currentColor 后内联),供 Image 直接用 |
remoteEnabled | 远程兜底开关(默认 true,企业内网可关) |
iconReady(name) | 远程图标下载完成信号(ShadcnIcon 内部监听刷新) |
说明
- 本地:74 个精选 lucide 图标(
src/assets/icons/),零延迟 / 离线可用 - 远程兜底:未命中从
unpkg.com/lucide-static拉取 → 内存 + 磁盘缓存(拉过一次离线可用) - 变色:渲染时把 svg 的
currentColor替换为请求颜色 → 随主题 / 状态动态变色 - 新增本地图标:把 svg 放进
src/assets/icons/即可(构建时自动打包)
