QFontMetrics 可以考虑 windows dpi 缩放吗?

Can QFontMetrics account for windows dpi scaling?

我的印象是,如果您在应用程序中这样做

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

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

但是,当 运行 以下代码在 Windows 10 中先缩放 100% 然后再缩放 200% 时,它不会 return 双倍大小。

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 倍?

谢谢

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

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

P.S。问题还需修改