You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt Designer 5.11.1生成代码调用QFont::setWeight传int编译报错咨询

问题根因

这个报错是Qt 6早期版本中uic(用户界面编译器,负责将Qt Designer的.ui文件转换为C++代码的工具)的兼容性问题导致的:Qt 6将QFont::Weight从原来的int类型别名改为了强类型枚举,但是对应版本的uic生成代码时没有对传入的字重数值做类型转换,直接传入int值,不符合强类型枚举的传参要求,因此触发编译错误。


1. 是否属于Qt Designer的bug

是,这是Qt 6.0~Qt 6.1版本范围内的已知官方bug,问题出在uic的代码生成逻辑,和Qt Designer的配置操作无关。

2. 能否在Qt Designer中通过配置解决

可以,无需修改自动生成的ui代码,可通过以下两种方式规避:

  • 改用样式表设置字体:在Qt Designer中选中对应控件,删除属性面板中字体相关的自定义配置,改为在样式表中添加如下规则:
    font: bold 16pt "Times New Roman";
    
    这种方式下uic只会生成样式表设置代码,不会触发setWeight的类型转换错误。
  • 业务代码后置修改字体:不在Qt Designer中设置该控件的粗体/字重属性,保留字体家族、字号的配置,在对应窗口类的构造函数中,setupUi调用之后添加代码修改字重:
    QFont font = ui->titleLabel->font();
    font.setBold(true);
    font.setWeight(QFont::Weight(75));
    ui->titleLabel->setFont(font);
    

3. 高版本是否已修复

是,该bug在Qt 6.2.0及后续版本中已经完成修复,对应版本的uic生成setWeight相关代码时,会自动添加QFont::Weight()的强制类型转换,不会再触发该编译错误。


内容的提问来源于stack exchange,提问作者Doug Fulford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 12:15:02