QT中的相对字体大小或最便于定义它们的方式

时间:2011-09-11 20:50:54

标签: qt text fonts size relativelayout

来自Web开发背景我现在正在进行QT应用程序开发。

使用QFonts我已经看到我只有两个选项,在QT中定义字体大小;或者按像素大小或点大小。

在制作网页布局时,我习惯用相对的方式定义所有字体...使用 em 单位引用继承的字体大小,其中 1em 等于容器元素的字体大小, 0.5em 50%字体大小, 1.5em 大50%,依此类推。

我担心我的应用程序的可移植性和设备/操作系统的独立性。有没有更好的方法来定义这些字体或者我应该坚持使用这些方法之一? 如果可能,我可以继承字体大小并以相对单位定义大小,例如 ems 或百分比吗?

3 个答案:

答案 0 :(得分:8)

根据您设计应用程序的方式,我担心并且担心字体大小,您还需要非常小心特定于平台的字体

例如,我刚刚在Qt Creator 2.3.0(基于Qt 4.7.4)中运行Qt Designer - 几乎是最新的稳定代码,并完成了以下工作:

  • 创建了一个新的Qt Designer表单(即.ui文件)
  • 制作一个空的Widget
  • 添加了QTextEdit(在Designer的“输入窗口小部件”部分中称为“文本编辑”)
  • 双击QTextEdit,打开其属性
  • 查看其来源

这就是我所看到的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">
<html><head><meta name="qrichtext" content="1" /><style type="text/css">
p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:7.8pt; font-weight:400; font-style:normal;">
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html>

在我对内容进行任何更改之前,请注意使用Windows特定字体和非常硬编码的大小:font-family:'MS Shell Dlg 2'; font-size:7.8pt;

我之前已经向Qt的用户支持报告了这一点,并且被告知(通过bug的状态)没有计划修复它。 (有关这些错误的信息,请参阅下面的编辑)

因此,在工作中,每个版本,我们都必须搜索所有.ui文件,以确保自上一版本以来没有特定于平台的字体信息悄悄进入任何.ui文件。

(一年或两年前,我在Mac,Windows和Linux上运行Designer,并显示每个版本都生成了这样的平台特定字体信息,并且默认字体大小不同。每个都无法正确显示在另外两个平台上!Mac文本在另外两个平台上太大了,而另外两个在Mac上太小了)

我非常喜欢Qt,但我觉得这种基础设施缺乏平台独立性,因为它的UI设计师非常沮丧。

编辑 - 来自TrollTech的错误信息,2009年7月

我发现了'.ui跨平台问题 - 字体和大小的可移植性'时的信息。我不知道2009年7月来自TrollTech的这些旧参考数据如何转化为当前的Qt问题跟踪:我希望其他人可能能够更新链接,以及当前工作的链接:

答案 1 :(得分:2)

目前无法实现。在我看来,最便携的方式是使用pts。因为它们与pxs的设备相关性较低。

答案 2 :(得分:0)

在qt3中,下一个代码至少适用于固定字体:

QFont f=font();
int psz=f.pixelSize();
if (psz>0) f.setPixelSize(psz*6/5);
else f.setPointSizeFloat(f.pointSizeFloat()*1.2);