4

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

body { font-size: 10pt; }

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

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

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

有没有办法让 和 显示相同的字体QWebView大小QTextEdit

谢谢!

4

2 回答 2

2

已在错误报告中解释了此行为

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

于 2014-12-25T13:15:41.267 回答
1

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

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

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

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

祝你好运。

于 2010-01-20T15:35:40.497 回答