QtShadcn
组件

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" }

属性

属性类型说明
namestring图标名(lucide 命名,见 IconRegistry.names)
sizeint显示尺寸(默认 24 = lucide 设计尺寸)
colorcolor颜色(默认 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/ 即可(构建时自动打包)
Copyright © 2026