2011-02-08 73 views
2

我有固定大小的窗口,其中我有文本标签。虽然我使用相同的字体,但是在Windows,Mac和Linux上,字体看起来不同,直到我不能依赖标签结束的位置,即使字符串和字体大小在我的应用程序中是不变的。QT:字体及其宽度

有没有解决方案?有人提到嵌入TTF字体并使用它们,但是真的有必要吗?

+0

你想要做什么,依靠文本标签结束的地方? – 2011-02-09 00:46:35

+1

我有一个固定大小的登录屏幕。我的标签不能只是跑出屏幕,但他们会因为我无法控制。有没有什么智能的方法可以衡量标签在特定平台上以某种字体占多少,以便窗口可以动态修改以适应它? – JasonGenX 2011-02-09 04:53:06

回答

3

没有哪种字体可以在所有平台上使用,不同字符串的高度/宽度比率对于不同的字体会有所不同(固定宽度略好)。另外,即使使用相同的字体,诸如不同的DPI设置也会令您头疼。我宁愿重新考虑你的小部件是否真的应该是固定大小,并且你完全需要这些关于字体大小的假设。在几乎所有情况下,如果您使用灵活的布局并坚持平台提供的任何字体和字体大小,您的用户界面将更易于使用,易读并与桌面其余部分保持一致。

1

因为我们的目标是让一行文本标签避开绘制在窗口边界之外,所以一种解决方案是调整运行时使用的字体大小。

QFontMetrics提供boundingRect()调用系列来查找在给定字体中绘制文本字符串时如何留出空间。有了这些,你就可以测试字符串是否可以放入空间。如果不适合,请减小字体大小并再次测试。