QWebView与所有其他QWidgets相比DPI [字体大小]不同?

问题描述:

我有显示一些HTML内容的QWebView,我用CSS样式化文本:QWebView与所有其他QWidgets相比DPI [字体大小]不同?

body { font-size: 10pt; } 

与QWebView窗口也有一个QTextEdit场,为我所设定的字体是这样的:

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

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

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

谢谢!

的这种行为已经给出了对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可以应用缩放到只有文字。

这有点棘手。我发现了一个很好的方式来得到准确的测量DPI从QApplication的,例如:

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

至于字体的话,你可以使用QWidget::fontMetrics()获得良好的字体规格信息。

我认为两者的结合会让你的网页视图和文字编辑有一定的一致性。

祝你好运。