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

与所有其他QWidget相比,QWebView中的DPI[字体大小]不同?

  •  4
  • BastiBen  · 技术社区  · 16 年前

    我有一个QWebView,它显示一些HTML内容,我使用CSS设置文本样式:

    body { font-size: 10pt; }
    

    带有QWebView的窗口也有一个 QTextEdit 字段,我为其设置了如下字体:

    QFont newFont;
    newfont.setPointSize(10);
    myEditField->setFont(newFont);
    

    不幸的是,文本显示在 QWebView QTextEdit . 我有一种感觉,这与DPI设置不同有关 .

    有没有一种方法可以让两个屏幕显示相同的字体大小 QWebView QTextEdit

    谢谢

    2 回复  |  直到 16 年前
        1
  •  2
  •   Ezee    11 年前

    有关此行为的解释已在上给出 the bugreports

    WebKit假设96 dpi为固定分辨率,这似乎是事实。如果这就是web内容的设计方式,那么我们在改变这一点时会遇到问题,因为还有其他人希望WebKit像在web浏览器中一样呈现web内容。 另见 https://www.webkit.org/blog/57/css-units/

    他们提出了两种解决办法:

    setZoomFactor setTextMultiplier

    可以使用当前DPI计算缩放因子和文本倍增:

    QWidget* window = QApplication::desktop()->screen();
    const int horizontalDpi = window->logicalDpiX(); 
    m_view->setZoomFactor(horizontalDpi / 96.0);
    

    使用 QWebSettings::ZoomTextOnly 只能对文本应用缩放。

        2
  •  1
  •   bgs    16 年前

    QWidget* window = QApplication::desktop()->screen();
    int horizontalDpi = window->logicalDpiX(); 
    

    就字体而言,您可以使用 QWidget::fontMetrics()

    我认为两者的结合将使您的web视图和文本编辑之间具有一定的一致性。

    祝你好运