我有一个显示一些HTML内容的QWebView,我使用CSS来设置文本样式:
body { font-size: 10pt; }
带有QWebView的窗口也有一个QTextEdit
字段,我为此设置了这样的字体:
QFont newFont;
newfont.setPointSize(10);
myEditField->setFont(newFont);
不幸的是,QWebView
中显示的文字略大于QTextEdit
中显示的文字。我觉得这与QWebView
中的DPI设置有所不同。
有没有办法为QWebView
和QTextEdit
显示相同的字体大小?
谢谢!
答案 0 :(得分:2)
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
,您只能将缩放应用于文本。
答案 1 :(得分:1)
这有点棘手。我发现获得准确的DPI测量的好方法来自QApplication,例如:
QWidget* window = QApplication::desktop()->screen();
int horizontalDpi = window->logicalDpiX();
就字体而言,您可以使用QWidget::fontMetrics()
来获取良好的字体指标信息。
我认为两者的结合将使您在网络视图和文本编辑之间保持一致。
祝你好运。