我的窗户大小固定,我有文字标签。虽然我使用相同的字体,但是在windows,mac和linux上字体看起来不同,直到我不能依赖标签结束的位置,即使字符串和字体大小在我的应用程序中是常量。
有没有解决方法?有人提到嵌入TTF字体并使用它们,但是真的有必要吗?
答案 0 :(得分:3)
在所有平台上都没有可依赖的字体,不同字符串的高/宽比率因不同字体而异(固定宽度略好)。此外,即使使用相同的字体,不同的DPI设置之类的东西也会让您头疼。我宁愿重新考虑你的小部件是否真的应该是固定的大小,你需要对字体大小的那些假设。几乎在所有情况下,如果您使用灵活的布局并坚持平台建议的任何字体和字体大小,您的UI将更加可用,可读并与桌面的其余部分保持一致。
答案 1 :(得分:1)
您可以使用QFont::setPixelSize来保证跨平台的字体大小一致。
答案 2 :(得分:1)
由于目标是保持一行文本标签不会超出窗口范围,因此一种解决方案是调整运行时使用的字体大小。
QFontMetrics
提供boundingRect()
系列调用,以查找在绘制给定字体时文本字符串必须占用的空间。有了这些,您可以测试字符串是否适合空间。如果不合适,请缩小字体大小并再次测试。