与所有其他QWidgets相比,QWebView中的DPI [font sizes]不同?

时间:2010-01-07 11:01:25

标签: css fonts qt4 dpi qwebview

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

body { font-size: 10pt; }

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

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

不幸的是,QWebView中显示的文字略大于QTextEdit中显示的文字。我觉得这与QWebView中的DPI设置有所不同。

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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,您只能将缩放应用于文本。

答案 1 :(得分:1)

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

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

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

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

祝你好运。