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设置不同有关。
有没有办法让两者的QWebView
和QTextEdit
显示相同的字体大小?
谢谢!
答
的这种行为已经给出了对the bugreports:
这似乎是真实的,WebKit的假定96 DPI为固定的分辨率。如果这是Web内容的设计方式,那么我们就会遇到一个问题,因为还有其他人期望WebKit能够像Web浏览器一样呈现Web内容。 又见https://www.webkit.org/blog/57/css-units/
他们提出两种解决方案:
QWebView提供setZoomFactor和setTextMultiplier,我相信可以用来获得所需的行为(匹配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()
获得良好的字体规格信息。
我认为两者的结合会让你的网页视图和文字编辑有一定的一致性。
祝你好运。