#pragma once // 程序绘制的扁平线性图标(无需图片资源):用于面板表头与表头操作按钮, // 风格对齐原型(细线、圆角端点、单色随主题)。仅外观,无交互逻辑。 #include #include #include class QLabel; class QAbstractButton; namespace geopro::app { enum class Glyph { // 面板表头图标 Tree, // 对象显示栏(层级) Dataset, // 数据真实显示栏(数据集/数据库) Map, // 二维/三维视图(图层) Detail, // 数据详情(图表) Anomaly, // 异常列表(警示三角) Property, // 属性(信息) // 表头操作按钮图标 Plus, // 新建/添加 Filter, // 筛选(漏斗) Upload, // 上传 Download, // 导出/下载 Collapse, // 折叠(双箭头) // 顶部应用栏图标 Workspace, // 工作空间(2x2 宫格) Folder, // 项目(文件夹) Help, // 帮助(?) Bell, // 通知(铃铛) Gear, // 设置(齿轮) }; // 「图标+文字」按钮的图标→文字间距补丁:Fusion 内置约 4px,本值补到规范 §6.7 的 6px。 // 做法:把图标渲染进“px 宽图标 + padRight 透明右边距”的画布,文字被这段透明区右推。 inline constexpr int kGlyphTextGapPad = 2; // 生成指定颜色、像素尺寸的图标(默认 16px,内部按 3x 绘制保证清晰)。 // padRight>0 时图标画布右侧留透明内边距(用于「图标+文字」按钮统一间距),图标本体仍为 px×px 居左。 QIcon makeGlyph(Glyph type, const QColor& color, int px = 16, int padRight = 0); // 随主题明暗自动着色的 glyph(取主题文本色:暗色用浅色、亮色用深色),主题切换时自动重绘。 // 用于面板表头/页签等 chrome 图标,避免固定色在暗色下看不清。 // 按钮版的 padRight:见 kGlyphTextGapPad;>0 时本函数同时把 iconSize 设为 (px+padRight)×px。 void setThemedGlyph(QLabel* label, Glyph type, int px); void setThemedGlyph(QAbstractButton* button, Glyph type, int px, int padRight = 0); // 生成树展开/折叠箭头 PNG 到临时目录,返回文件路径(供树的 QSS `image: url(...)` 引用)。 // 配合 QTreeView::branch 背景使用,可让选中高亮不覆盖左侧缩进/箭头列且不丢箭头。 QString writeChevronIcon(bool open, const QColor& color); // 生成清晰复选框 PNG(供 QTreeView::indicator 的 QSS `image:url(...)`): // 未选=明显边框空心方框;选中=填充色方框 + 白色对勾。明暗各传一套色,tag 区分文件名。 QString writeCheckboxIcon(bool checked, const QColor& border, const QColor& fill, const QColor& check, const QString& tag); } // namespace geopro::app