桌面应用跨平台【免费下载链接】nodeguiA library for building cross-platform native desktop applications with Node.js and CSS . React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org项目地址https://gitcode.com/gh_mirrors/no/nodegui点击查看免费下载导读ColorRole是 NodeGui基于 Qt 的跨平台原生桌面应用库中与QPalette调色板配套的核心枚举它定义了控件界面中每一种颜色槽的语义角色——从窗口背景、前景文本到高亮、链接、工具提示等共 21 种角色。本文以 ColorRole 枚举文档 为主体结合 NodeGui 的 TypeScript 封装源码与 C 绑定实现完整列出每个枚举成员的数值含义并演示如何通过QPalette.color()与ColorGroup配合读取调色板颜色帮你精确掌控桌面应用的主题配色。ColorRole 是什么在 Qt 的配色体系中一个控件的最终外观并不是由单一颜色决定的而是由语义角色 状态组共同描述。ColorRole颜色角色就是这套体系中的语义角色维度它抽象地回答这块区域是干什么的例如WindowText窗口前景文本、Highlight选中高亮背景、Link超链接文字等。至于这块区域当前处于何种状态激活 / 禁用 / 非激活则由 ColorGroup 枚举负责。NodeGui 在 src/lib/QtGui/QPalette.ts 中定义了与 QtQPalette::ColorRole完全对应的ColorRole枚举并在 src/index.ts 中随QPalette、ColorGroup一并导出供 TypeScript / JavaScript 开发者直接使用。枚举成员完整清单21 个角色数值 0~20下表完整收录了 ColorRole 枚举文档 中的全部成员及其对应的数值与src/lib/QtGui/QPalette.ts中的定义一一对应。按功能归类后可直观看出 Qt 调色板的分工窗口与前景色成员数值语义WindowText0窗口内普通前景文本颜色Window10窗口背景颜色Button1普通按钮的背景填充色ButtonText8按钮上的文本颜色BrightText7比Text更亮的前景文本常用于与高亮背景形成对比Text6控件普通文本颜色Base9可编辑控件输入框、列表项等的背景色AlternateBase16交替行背景色配合视图交替行着色使用立体感与阴影色阶Qt 通过光、暗、中三个色阶模拟按钮的立体感四个成员数值连续分布成员数值语义Light2比Button更亮的颜色模拟受光面Midlight3介于Light与Mid之间模拟次受光面Mid5介于Button与Dark之间的中间色Dark4比Button更暗的颜色模拟背光面Shadow11投影 / 阴影颜色营造立体凹陷感高亮与选中成员数值语义Highlight12选中项 / 当前项的背景色HighlightedText13高亮背景上的文本色链接与工具提示成员数值语义Link14未访问的超链接文字颜色LinkVisited15已访问过的超链接文字颜色ToolTipBase18工具提示的背景色ToolTipText19工具提示的文本色特殊角色成员数值语义NoRole17无角色标记表示未分配任何颜色角色常作为函数返回值的占位PlaceholderText20输入控件中占位提示文本placeholder的颜色在 NodeGui 中的实际用法1. 通过 QPalette.color() 读取角色颜色ColorRole枚举最直接的使用场景是调用 QPalette.color()该方法签名在 QPalette 类文档 中有完整记录color(group: ColorGroup, role: ColorRole): QColor它需要同时传入ColorGroup与ColorRole两个枚举返回值是 QColor 实例。之所以要两个维度是因为同一个颜色角色在控件的不同状态下取值可能不同——例如禁用状态的文本色通常比激活状态浅。从源码结构看NodeGui 为每个 JS 调用方都提供了对应的原生方法在 C 绑定层 src/cpp/lib/QtGui/QPalette/qpalette_wrap.cpp 中传入的 JS 数字会被直接转换为 Qt 原生枚举QPalette::ColorRole与QPalette::ColorGroup再调用 Qt 的QPalette::color()返回QColor并包装成 JS 对象。这印证了ColorRole的数值定义与 Qt 原生枚举完全对齐。2. 获取应用级调色板在 NodeGui 运行时Qode启动后应用已经自动初始化了全局QApplication。你可以通过 QApplication.palette() 拿到当前应用的调色板实例import { QApplication, ColorGroup, ColorRole } from nodegui/nodegui; const qApp QApplication.instance(); const palette qApp.palette(); // 读取激活状态下窗口背景与高亮色 const windowColor palette.color(ColorGroup.Active, ColorRole.Window); const highlightColor palette.color(ColorGroup.Normal, ColorRole.Highlight); // QColor 支持 RGB 分量读取与多种构造方式 console.log(windowColor.red(), windowColor.green(), windowColor.blue());其中QApplication.instance()是获取全局应用实例的静态方法见 src/lib/QtGui/QApplication.ts无需手动new QApplication()。3. 与 ColorGroup 的搭配关系ColorGroup 枚举 只有 4 个成员其中Active与Normal数值均为 0在 src/lib/QtGui/QPalette.ts 中定义成员数值语义Active0当前激活获得焦点状态Normal0与Active等价常规状态别名Disabled1禁用状态Inactive2非激活失去焦点状态典型组合示例// 禁用状态下的文本色通常比激活态更浅 const disabledText palette.color(ColorGroup.Disabled, ColorRole.Text); // 非激活窗口的标题文字 const inactiveTitle palette.color(ColorGroup.Inactive, ColorRole.WindowText);相关源码路径与扩展阅读ColorRole枚举定义src/lib/QtGui/QPalette.tsColorGroup枚举定义src/lib/QtGui/QPalette.tsQPalette.color()实现src/lib/QtGui/QPalette.tsC 原生绑定层src/cpp/lib/QtGui/QPalette/qpalette_wrap.cpp枚举导出入口src/index.tsQApplication.palette()获取应用调色板src/lib/QtGui/QApplication.ts相关 API 文档QPalette 类、ColorGroup 枚举、QColor 类注意事项与局限部分角色相关 API 尚未实现从 QWidget 源码 可以看到backgroundRole()、foregroundRole()、setBackgroundRole()、setForegroundRole()等方法在 NodeGui 中仍标记为TODO即通过ColorRole为单个控件设置前景 / 背景角色目前尚不可用请以 QWidget 类文档 为准。样式化替代方案对单个控件配色NodeGui 更常用的是setStyleSheet继承自 Qt 样式表机制相关接口可见 QApplication.setStyleSheet。ColorRole体系更适合需要按状态组精细读取系统主题颜色的场景。数值含义与 Qt 对齐ColorRole的数值直接映射到原生QPalette::ColorRole见 qpalette_wrap.cpp因此不要自行改动枚举数值否则原生层转换会错位。赞分享桌面应用跨平台【免费下载链接】nodeguiA library for building cross-platform native desktop applications with Node.js and CSS . React NodeGui : https://react.nodegui.org and Vue NodeGui: https://vue.nodegui.org项目地址https://gitcode.com/gh_mirrors/no/nodegui点击查看免费下载相关推荐AG Kit扩展开发创建自定义钩子与插件的指南AG Kit扩展开发创建自定义钩子与插件的指南 AG Kit是一款模块化AI代理工具包Modular AI Agent Toolkit为开发者提供了构建桌面应用跨平台NodeGui 中的 ClipOperation 枚举QPainter 裁剪操作模式与 Qt 语义全解析NodeGui 中的 ClipOperation 枚举QPainter 裁剪操作模式与 Qt 语义全解析 NodeGui 通过 TypeScript 枚举将桌面应用跨平台NodeGui 中的 ColorDialogOption 枚举解析颜色对话框选项的值、组合方式与底层实现NodeGui 中的 ColorDialogOption 枚举解析颜色对话框选项的值、组合方式与底层实现 本文围绕 NodeGui基于 Node.js 桌面应用跨平台上一篇React Native推送通知与深度链接终极指南从入门到精通下一篇React Static 插件系统完全指南从安装配置到编写 Node 与 Browser 插件 API创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
