导入FluentWinUI3后如何全局修改QML项目字体?
全局替换FluentWinUI3样式默认字体的方法
因为FluentWinUI3的样式规则是通过Config组件统一管理的,所有组件的字体都是从这里读取的,直接全局覆盖Config里的字体定义是最高效的方案,不用逐个修改组件:
方法:自定义Config组件覆盖默认字体
- 创建自定义Config文件
新建一个CustomFluentConfig.qml文件,导入FluentWinUI3模块后,继承原Config组件,把所有指定Segoe UI的fontFamily属性替换成你需要的CJK字体(比如Source Han Sans SC):
import QtQuick.Controls.FluentWinUI3 6.9 Config { // 覆盖按钮各状态下的标签字体 button.label.fontFamily: "Source Han Sans SC" button.checked.label.fontFamily: "Source Han Sans SC" button.disabled.label.fontFamily: "Source Han Sans SC" // 覆盖输入框的标签和输入内容字体 textField.label.fontFamily: "Source Han Sans SC" textField.input.fontFamily: "Source Han Sans SC" // 覆盖下拉框的标签和弹窗选项字体 comboBox.label.fontFamily: "Source Han Sans SC" comboBox.popup.item.label.fontFamily: "Source Han Sans SC" // 其他组件如复选框、文本块的字体,参照原Config结构补充 checkBox.label.fontFamily: "Source Han Sans SC" textBlock.fontFamily: "Source Han Sans SC" }
你可以找到Qt安装目录下的
qml/QtQuick/Controls/FluentWinUI3/Config.qml文件,查看完整的字体定义项,确保所有涉及fontFamily的属性都被覆盖。
- 在主窗口中应用自定义Config
在你的MainWindow.qml里,设置FluentWinUI3样式的config为自定义组件:
import QtQuick.Controls.FluentWinUI3 6.9 ApplicationWindow { id: mainWindow width: 800 height: 600 title: "测试窗口" // 应用自定义Config,全局替换字体 FluentWinUI3.style.config: CustomFluentConfig {} // 示例组件,无需单独设置font.family Button { text: "测试按钮" anchors.centerIn: parent } TextField { text: "测试输入框" anchors.top: parent.top anchors.horizontalCenter: parent.horizontalCenter anchors.topMargin: 20 } }
这种方式完全遵循FluentWinUI3的样式设计逻辑,所有使用该样式的组件都会自动继承自定义Config里的字体设置,不用再逐个修改。
内容的提问来源于stack exchange,提问作者Windy_D
相关产品推荐
相关产品推荐

