今天发现QFontMetric的一个问题
QFontMetrics可以输入一个字体和一个字符串,计算出字符串在这种字体下的显示尺寸。
这种计算比较耗时间,因此Qt内部应该是缓存了计算结果。具体方法是在第一次调用时,把QFontMetrics绑定的字体内部每个字的尺寸都计算出来,以后对相同字体求大小的时候便可以直接查询每个字的尺寸,最后累加出大小返回给用户。
问题在于QFont允许通过setPointSizeF设置浮点数字号,这样若程序需要动态计算出字号,则每次计算的结果都不相同,于是基本上缓存会无限制增长,形成事实上的内存泄漏。。。
解决方法是尽量采用setPointSize设置整数字号。