2012-01-27 22 views
3

使用PyQt4,我創建一個QWebView,然後用它的setHtml()方法加載它。 HTML在大多數方面都能正確顯示,但始終使用默認的sans-serif字體。如何讓QWebView/QWebPage默認爲襯線字體?

當外部瀏覽器加載相同的HTML純文本時,例如, Firefox,它以默認襯線字體顯示。我希望webview也能做到這一點。

我已經閱讀了QWebView,QWebPage和QWebSettings的文檔,沒有看到設置默認「標準」或「比例」字體的方式,與瀏覽器的首選項設置相當。我查看了QStyleSheets,但它們似乎不適用於QWebView/WebPage。

+0

出於好奇,爲什麼不設置一些CSS在內容中? 「'應該這樣做...... – 2012-01-27 02:31:57

+0

對於要通過此應用編輯的HTML文檔,有一個標準,它們不指定字體或字體系列,但默認比例字體。這樣用戶就可以始終通過瀏覽器首選項來控制外觀。我無法弄清楚的是,如何做一個「瀏覽器首選項」相當於QWebPage。 – user405 2012-01-27 04:12:16

回答

0

QWebSettings似乎有你需要的一切:

enum FontFamily { StandardFont, FixedFont, SerifFont, SansSerifFont, CursiveFont, FantasyFont } 
void setFontFamily (FontFamily which, const QString & family) 

我沒有測試它,但你有什麼缺失?你可能想看看基於Qt Webkit的網頁瀏覽器Arora

+0

沒有。 setFontFamily建立要用於通用FontFamily的特定字體名稱,例如當我打印查詢fontFamily(QWebSettings.SerifFont)時,我得到「Times New Roman」。我可以調用setFontFamily(QWebSettings.SerifFont,「Palatino」)和viola,fontFamily會回顯「Palatino」。大吶喊 - 網頁仍然使用默認的SansSerifFont顯示。問題是,如何讓QWebPage使用SerifFont而不是SansSerifFont進行渲染。 – user405 2012-01-27 16:35:08

+0

......我應該說,我認爲這是問題,我可能是錯的(我經常是) – user405 2012-01-27 16:48:04

+0

我可能在這裏錯過了一些明顯的東西,但是您是否也可以爲SansSerifFont設置字體? – 2012-01-27 17:58:00

5

要設置默認字體爲所有網頁,使用QWebSettings改變字體家族爲StandardFont,並更改DefaultFontSize字體大小:

settings = QtWebKit.QWebSettings.globalSettings() 
settings.setFontFamily(QtWebKit.QWebSettings.StandardFont, 'Times New Roman') 
settings.setFontSize(QtWebKit.QWebSettings.DefaultFontSize, 12) 
+1

就是這樣,非常感謝你! – user405 2012-01-28 03:55:20

+0

如果html包含未定義的字體系列,例如: p {font-family:「xyz」} ..在這種情況下,網頁不使用默認字體爲什麼? – Ashish 2012-10-23 11:27:01

+0

@Ashish。對不起 - 我不知道。其他人可能會這樣做,所以你應該問一個新的問題。 – ekhumoro 2012-10-23 15:31:26