代码之家  ›  专栏  ›  技术社区  ›  Octo

QFontMetrics可以解释windows dpi扩展吗?

  •  0
  • Octo  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  1
  •   Alexander V    7 年前

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

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

    P、 这个问题仍然需要修改。