0

我的印象是,如果您在应用程序中执行此操作

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

谢谢

4

1 回答 1

1

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

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

PS这个问题还需要修改。

于 2017-11-06T20:39:13.077 回答