QFontMetrics可以解释Windows dpi缩放吗?

时间:2017-11-06 19:25:40

标签: qt scaling dpi qfontmetrics qfont

我的印象是,如果你在你的申请中这样做

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication* app = new QApplication(temp, NULL);

然后字体会在高分辨率显示屏上自动放大。如果您在Windows 10中明确增加字体缩放(设置 - >系统 - >自定义缩放),则相同。

但是,在Windows 10中以100%然后200%缩放运行以下代码时,它不会返回加倍的大小。

QFont font = QFont("arial", 10);
QFontMetrics fm(font);
int width = fm.width("abcdefgABCDEFG");

奇怪的是,只有1个像素差异。

100% --> width = 108 pixels
200% --> width = 109 pixels

为什么?我可以让QFontMetrics考虑Windows缩放吗?或者我是否需要使用逻辑/物理DPI来推断字体大小必须增加2倍?

由于

1 个答案:

答案 0 :(得分:1)

为了正确缩放自定义绘制的项目,使用QScreen::physicalDotPerInch属性来实现缩放系数以应用于实际绘图:

qreal myScale = pScreen->physicalDotPerInch() / constStandardPerInch;

P.S。这个问题仍需要修改。