# bianbu-widgets-theme

基于 Qt6 Fusion 的样式插件（样式键：`bianbu`）。当前重点定制 QMenu（面板与菜单项）的外观，颜色从调色板/主题 JSON 获取；其它控件回退到 Fusion 默认渲染。

## 功能特性

- 菜单面板：支持圆角与真实透明背景；边框/圆角半径/描边宽度可通过主题配置。
- 选中高亮：遵循调色板 Highlight 颜色，圆角与面板风格一致。
- 菜单项布局：
  - 行高 40dp；
  - 图标固定 24dp；
  - 水平内边距：左 8、右 4；
  - 无图标的普通项，文字起始于 40dp（8+24+8），与有图标时保持对齐；
  - 分隔线颜色与宽度可配置，外边距为 0。
- 子菜单箭头：使用矢量“chevron”并按规范定位（LTR 顶点距项右缘内 12.5px；RTL 镜像）。
- 复选项（NonExclusive）：自绘透明 24×24 指示区域，平滑对勾矢量路径；未选中不显示。
- 单选项（Exclusive）：
  - 无图标：选中时显示 6×6 的蓝色圆点（rgb(64,158,255)），未选中不显示；
  - 有图标：不绘制圆点，仅绘制图标；所有指示/图标均与 24×24 槽位对齐并水平居中。
- 下拉容器解耦：QComboBox 下拉容器保持直角，不继承菜单圆角样式。

## 构建与安装

```bash
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr
cmake --build build --parallel
sudo cmake --install build
```

## 使用方式

```bash
QT_STYLE_OVERRIDE=bianbu yourApp
# 或
yourApp -style bianbu
```

## 主题配置（Theming）

可以通过环境变量 `BIANBU_THEME_FILE` 指定主题 JSON 文件；若未指定，按如下顺序查找：

1. `$BIANBU_THEME_FILE`（若存在路径则优先使用）
2. `$XDG_CONFIG_HOME/<AppName>/bianbu/theme.json`（应用配置目录）
3. `$XDG_CONFIG_HOME/bianbu/theme.json`（全局配置目录）
4. `$XDG_DATA_HOME/bianbu/theme.json` 及其它 GenericDataLocation 条目
5. 安装的数据目录：`(GenericDataLocation)/bianbu/default-theme.json`
6. 源码运行兜底：`./default-theme.json`（仅在从源码树直接运行时）

## 扩展与二次开发

- 在 `ThemeConfig` 中新增属性，并在 `ThemeConfig::load` / `applyJson` 中解析；
- 在 `BianbuStyle::buildDispatch` 注册对应绘制处理（当前仅启用了菜单相关处理）。

## 备注

- 插件重点仅对 QMenu 生效；其它控件保持 Fusion 行为。
- HiDPI/RTL 场景已考虑坐标与镜像；如需进一步微调颜色或尺寸，可扩展到主题配置。
