【问题标题】:Differing DPI [font sizes] in QWebView compared to all other QWidgets?与所有其他小部件相比,QWebView 中的 DPI [字体大小] 不同?
【发布时间】:2010-01-07 11:01:25
【问题描述】:

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

body { font-size: 10pt; }

带有 QWebView 的窗口也有一个 QTextEdit 字段,为此我设置了这样的字体:

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

很遗憾,QWebView 中显示的文本比QTextEdit 中显示的文本略大。我感觉这与 QWebView 中的 DPI 设置不同有关。

有没有办法让QWebViewQTextEdit 显示相同的字体大小?

谢谢!

【问题讨论】:

    标签: css fonts qt4 dpi qwebview


    【解决方案1】:

    已在the bugreports 上给出了此行为的解释:

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

    他们提出了两种解决方案:

    QWebView 提供了setZoomFactorsetTextMultiplier,我相信它们可用于获得所需的行为(与 QWidget 匹配)。

    您可以使用当前 DPI 计算缩放系数和文本乘数:

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

    使用QWebSettings::ZoomTextOnly,您可以仅对文本应用缩放。

    【讨论】:

      【解决方案2】:

      这有点棘手。我发现一个获得准确 DPI 测量值的好方法来自 QApplication,例如:

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

      就字体而言,您可以使用QWidget::fontMetrics() 获得良好的字体指标信息。

      我认为两者的结合将使您的网络视图和文本编辑之间保持一定的一致性。

      祝你好运。

      【讨论】:

        猜你喜欢
        • 2011-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-15
        • 1970-01-01
        • 2017-05-31
        • 2021-01-04
        相关资源
        最近更新 更多