今天解决了一个异常,查了好久,记录一下吧。
也没做啥,就给指定区域画了框,写了点文字,运行的时候,就会报异常。

后来才发现,是渲染导致的
QFont("Arial", 12, QFont::Bold) 加载 Arial 粗体字体时,Qt 字体引擎在「超大透明画布 + Windows 无边框 / 透明窗口」环境下触发了 GDI 缓存溢出,进而透传为误导性的 FileFormatException/CacheOverflowException;而改用系统内置的「SimHei(黑体)+ 非粗体 + 关闭文字抗锯齿」后,字体渲染复杂度大幅降低,缓存溢出条件不满足,异常彻底消失。
代码修改处:
原:
painter.setFont(QFont("Arial", 12, QFont::Bold));
修改后:
QFont font;
font.setFamily("SimHei"); // 用系统内置黑体(避免Qt加载自定义字体)
font.setPointSize(12); // 固定字号(避免动态计算字号)
font.setBold(false); // 禁用粗体(减少渲染复杂度)
painter.setFont(font);
重新编译运行,好了,没有异常了。

被折叠的 条评论
为什么被折叠?



