2010-01-07 58 views
4

我有顯示一些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顯示相同的字體大小?

謝謝!

回答

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

這有點棘手。我發現了一個很好的方式來得到準確的測量DPI從QApplication的,例如:

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

至於字體的話,你可以使用QWidget::fontMetrics()獲得良好的字體規格信息。

我認爲兩者的結合會讓你的網頁視圖和文字編輯有一定的一致性。

祝你好運。

相關問題