桌面应用跨平台【免费下载链接】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点击查看免费下载QFontWeight是 NodeGui 封装 QtQFont字体字重时暴露的核心枚举它将字体的粗细程度抽象为 100 到 900 的九个标准档位。本文以官方 API 文档中QFontWeight的枚举定义为主体结合仓库中 TypeScript 层的类型声明、C N-API 封装实现以及QFont、QTextEdit、QFontDatabase等组件的实际用法完整讲清每个枚举成员的含义、取值、跨层传递链路和典型应用场景帮助你在构建 Node.js 原生桌面 UI 时精确控制字体粗细。枚举成员总览九个标准字重档位QFontWeight枚举在 NodeGui 中的官方 API 参考位于 qfontweight.md。该枚举共定义了 9 个成员取值与 QtQFont::Weight及 CSSfont-weight的数值刻度完全对齐从最细的 Thin 到最粗的 Black 依次递增 100枚举成员数值语义说明Thin100极细体HairlineExtraLight200特细体Ultra LightLight300细体Normal400常规体默认字重Medium500中等体DemiBold600半粗体Bold700粗体ExtraBold800特粗体Black900黑体Extra Black / Heavy其中Normal 400是 CSS 与 Qt 体系中的默认字重Bold 700是传统加粗对应的档位。这组数值并非 NodeGui 自定义而是直接沿用 Qt 底层的QFont::Weight常量因此你在 Qt C 文档中查到的字重数值可以直接对照使用。在 NodeGui 源码中该枚举以 TypeScript 原生enum的形式定义在 QFont.ts 文件末尾并随包入口 index.ts 对外导出// src/lib/QtGui/QFont.ts export enum QFontWeight { Thin 100, ExtraLight 200, Light 300, Normal 400, Medium 500, DemiBold 600, Bold 700, ExtraBold 800, Black 900, }这意味着在业务代码中可以直接以import { QFontWeight } from nodegui的形式引用枚举名而不是手写魔法数字从而在 IDE 中获得完整的补全与类型提示。字重如何进入 QFont构造函数与 setWeightQFontWeight不是孤立存在的它的消费入口是 QFont 类。QFont提供了两条设置字重的路径。路径一构造函数一步指定QFont的构造函数支持以(family, pointSize, weight, italic)四个参数直接创建一个带字重的字体声明位于 QFont.tsconstructor(); constructor(font: QFont); constructor(native: NativeElement); constructor(family: string, pointSize?: number, weight?: QFontWeight, italic?: boolean);实际使用中pointSize缺省传-1表示沿用 Qt 默认点大小、weight缺省传-1表示不指定沿用默认字重import { QFont, QFontWeight } from nodegui; // 创建一个 14pt、DemiBold 字重、非斜体的 Helvetica 字体 const titleFont new QFont(Helvetica, 14, QFontWeight.DemiBold); // 只指定家族字重走 Qt 默认Normal const bodyFont new QFont(Helvetica, 12);从源码结构看TypeScript 层把weight以数字形式透传给原生 addon 的构造函数C 侧在 qfont_wrap.cpp 中以 4 参分支直接调用std::make_uniqueQFont(QString, pointSize, weight, italic)因此传入的数值必须落在 Qt 可识别的字重范围内即本文表格中的 9 个档位否则 Qt 会按内部规则就近匹配。路径二setWeight / weight 读写接口对已创建的QFont实例可通过setWeight修改、weight读取当前字重font.setWeight(QFontWeight.Black); const w: QFontWeight font.weight();TypeScript 声明位于 QFont.ts其实现是一层对 native 对象的直通调用setWeight(weight: QFontWeight): void { this.native.setWeight(weight); } weight(): QFontWeight { return this.native.weight(); }值得注意的是在跨 JS/Native 边界时字重被当作整数传输。C 封装 qfont_wrap.cpp 中的实现明确展示了这一过程Napi::Value QFontWrap::setWeight(const Napi::CallbackInfo info) { Napi::Env env info.Env(); int weight info[0].AsNapi::Number().Int32Value(); this-instance-setWeight(static_castQFont::Weight(weight)); return env.Null(); } Napi::Value QFontWrap::weight(const Napi::CallbackInfo info) { Napi::Env env info.Env(); return Napi::Value::From(env, static_castint(this-instance-weight())); }可以看到weight()的返回值同样是static_castint即 TypeScript 侧拿到的就是一个 100~900 之间的整数。这也解释了为什么QTextEdit等组件的字重接口声明为number类型——它们复用的是同一套整数编码。实战场景把字重落到具体组件上QFontWeight的最终价值体现在把带字重的QFont应用到各种控件与绘制上下文上。结合仓库源码典型用法如下。1. 应用到任意 QWidgetQWidget提供了setFont(font: QFont)方法见 QWidget.ts因此可以为标题栏、按钮等任何控件设置粗体字import { QWidget, QLabel, QFont, QFontWeight } from nodegui; const label new QLabel(NodeGui Demo); label.setFont(new QFont(Helvetica, 16, QFontWeight.Bold)); label.setParent(widget);2. 列表与表格项级别的字重控制QListWidgetItem与QTableWidgetItem都暴露了独立的setFont见 QListWidgetItem.ts 和 QTableWidgetItem.ts允许在 Model/View 架构中为单条数据指定差异化字重例如把选中项渲染为Bold、普通项保持Normal。3. 富文本编辑中的字重QTextEditQTextEdit的字重接口与QFontWeight数值体系直接互通见 QTextEdit.tssetTextFontWeight(weight: number): void fontWeight(): number这里的参数类型是number但取值就是本文表格中的 100~900 档位等价于QFontWeight的数值// 等效于 textEdit.setTextFontWeight(QFontWeight.ExtraBold) textEdit.setTextFontWeight(800);此外QTextEdit还配套提供了setFamily、setItalic、setPointSize等针对currentFont()的快捷方法currentFont(): QFont返回的同样是QFont包装对象可继续调用setWeight。4. 查询系统字体的可用字重QFontDatabase设置字重前通常需要先确认目标字体家族在系统中实际具备哪些字重档位。QFontDatabase提供了weight(family, style)查询方法返回该家族某样式对应的字重数值见 QFontDatabase.tsimport { QFontDatabase, QFont, QFontWeight } from nodegui; const db new QFontDatabase(); const styles db.styles(Helvetica); // 该家族可用样式列表 for (const style of styles) { const w db.weight(Helvetica, style); // 查询样式对应的字重值 console.log(style, w); }从源码结构看QFontDatabase.weight返回的也是QFont::Weight整数编码因此可以把它与QFontWeight枚举直接比较用于只在该家族确实存在 Bold 档位时才启用粗体这类防御性布局逻辑。5. 字体对话框联动QFontDialog的currentFont(): QFont返回用户选定的字体见 QFontDialog.ts拿到后可以直接读取weight()得到用户选择的字重档位实现所见即所得的字重配置面板。使用注意事项数值必须落在档位内setWeight与构造函数底层都会把数值强转为QFont::Weight100~900 之间每 100 一档才是规范取值中间值如 450不是QFontWeight定义的成员不建议在 NodeGui 侧直接手写。字体家族可能不具备全部字重字重档位是请求值。从源码结构看setWeight只是把请求写入QFont最终渲染效果由 Qt 根据字体家族实际包含的字面face决定若家族缺少Black字面Qt 会选择近似字重渲染。建议用QFontDatabase.weight/styles先行探测。与 setBold 的关系QFont同时提供setBold(enable: boolean)见 QFont.ts其语义是加粗与否的布尔开关而setWeight提供 9 档精细控制。需要细粒度控制如 DemiBold 与 Black 的区分时应使用QFontWeight仅需要粗/不粗二元状态时用setBold即可。同一文件内的兄弟枚举与QFontWeight同文件定义的还有 QFontStretch50~200 的宽度拉伸档位与 QFontCapitalization大小写形态三者组合使用才能完整描述一个QFont的视觉外观。小结QFontWeight是 NodeGui 字体体系中控制字重的标准化枚举9 个成员覆盖 100Thin到 900Black的全档字重数值与 QtQFont::Weight、CSSfont-weight保持同一刻度。通过QFont的构造函数或setWeight写入、通过QWidget/QListWidgetItem/QTextEdit等组件的字体接口应用、并配合QFontDatabase查询系统实际可用的字重你就可以在 Node.js 原生桌面应用中实现精确、跨平台一致的字体粗细控制。如需进一步查阅完整的QFont方法签名可参考 qfont.md。赞分享桌面应用跨平台【免费下载链接】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点击查看免费下载相关推荐TypeScript 枚举Enum完全指南数字枚举、常量枚举与反向映射深度解读TypeScript 枚举Enum完全指南数字枚举、常量枚举与反向映射深度解读 本文基于开源仓库 typ/typescript book https://文档教程TypeScript 枚举完全指南数字枚举、标志位、字符串枚举与 const 枚举实战解析TypeScript 枚举完全指南数字枚举、标志位、字符串枚举与 const 枚举实战解析 TypeScript 为 JavaScript 引入了 enum教程TypeScript枚举类型详解数字枚举与字符串枚举的完整用法TypeScript枚举类型详解数字枚举与字符串枚举的完整用法 TypeScript枚举类型是TypeScript中一个强大的特性它允许我们定义一组命名的常文档教程上一篇Ladda与PWA集成离线状态下的加载按钮行为处理下一篇ComfyUI-LTXVideo终极指南如何快速上手AI视频生成插件创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
安全运维实操:蜜罐部署、堡垒机配置与API调用全流程 这几天在搭一套安全运维的学习环境,今天已经到第4天了。按计划今天要同时过掉三样东西:蜜罐、堡垒机和API。说“同时”其实并不准确,准确说是把一个实操链条拧到了一起——用HFish容器快速部署一个蜜罐当诱饵,用明御堡垒机配合Mob… · 2026/9/25 3:44:19
Kvasir-SEG息肉检测YOLO数据集:开箱即训+标注校验+小目标增强 简介:本资源是面向医学图像AI初学者与目标检测实践者的YOLO格式息肉检测专用数据集,基于Kvasir-SEG公开数据构建,专为结肠镜图像中单类别(息肉)定位任务设计,可直接用于YOLOv5/v8/v10等主流框架训练与验证。… · 2026/9/25 3:44:12
如何读懂EasyXMen实时操作系统内核:任务调度、Alarm与事件机制源码级剖析 如何读懂EasyXMen实时操作系统内核:任务调度、Alarm与事件机制源码级剖析 【免费下载链接】开源小满EasyXMen代码仓库 持续18年精心打造的安全车控操作系统BSW代码。 项目地址: https://gitcode.com/easyxmen/XMen
EasyXMen(开源小满)… · 2026/9/25 3:44:12
5 步换好游戏里的 DLSS 版本:DLSS Swapper 实操教程(免费开源) 5 步换好游戏里的 DLSS 版本:DLSS Swapper 实操教程(免费开源) 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper
远景发虚、像糊了一层雾,或者开 DLSS 后帧数没涨反而多了伪… · 2026/9/25 6:03:55
opencodex Provider Workspace 账户体系 A 门审计:从账户切换器到多账号状态治理的源码级复盘 【免费下载链接】opencodex Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code 项目地址: https://gitcode.com/gh_mirrors/ope/opencodex 点击… · 2026/9/25 6:03:49
Atlas 300V 24G推理加速卡实战:YOLO模型部署全流程解析 1. 一张24G的推理卡,到底算不算“运算加速卡”最近后台好几个朋友都在问同一个问题:"Atlas 300V 24G是不是运算加速卡?"还有人直接问"能不能拿它部署YOLO"。这问题听起来简单,但背后的误解不少。我最初拿到这… · 2026/9/25 6:03:49
Atlas 300V 24G部署YOLO全流程:从CANN安装到ONNX转OM 上周有个做安防项目的朋友给我发了张设备图,紧接着就是一个直球问题:Atlas 300V 24G 是运算加速卡吗?他真正想问的是,这东西能不能把手上的 YOLO 检测模型接过来,替换掉机房那几台老旧 GPU 服务器。这个问题看着简单&a… · 2026/9/25 6:03:49
Atlas 300V 24G上部署YOLO:从ONNX到OM的完整实战指南 1. 一张24G显存的推理卡,为什么值得折腾YOLO先说结论:Atlas 300V 24G这块卡,放在今天的目标检测部署场景里,性价比和能效比都相当能打。尤其当你想在生产环境里跑YOLO系列模型,又不想被GPU的采购成本和功耗牵着走时&am… · 2026/9/25 6:03:49
Learn-Algorithms 面试题拾遗:几何相交与排列组合类算法题全解析 教程 【免费下载链接】Learn-Algorithms 算法学习笔记 项目地址: https://gitcode.com/gh_mirrors/le/Learn-Algorithms 点击查看 免费下载 本文基于《Learn-Algorithms》仓库中 97 其他.md 整理的五类高频笔试题展开:两圆相交最长弦的几何极值、四点判… · 2026/9/25 6:03:43
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37