我的印象是,如果你在你的申请中这样做
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倍?
由于
答案 0 :(得分:1)
为了正确缩放自定义绘制的项目,使用QScreen::physicalDotPerInch属性来实现缩放系数以应用于实际绘图:
qreal myScale = pScreen->physicalDotPerInch() / constStandardPerInch;
P.S。这个问题仍需要修改。