如何将QWebView/QWebPage默认字体设置为衬线字体?

3
使用PyQt4,我创建了一个QWebView,并使用其setHtml()方法加载它。在大多数方面,HTML都被正确地显示,但始终使用默认的无衬线字体。
当相同的HTML纯文本由外部浏览器(如Firefox)加载时,它会显示默认的有衬线字体。我希望Webview也能做到这一点。
我已经阅读了QWebView、QWebPage和QWebSettings的文档,没有看到设置默认“标准”或“比例”的字体的方式,类似于浏览器的首选项设置。我查看了QStyleSheets,但它们似乎不适用于QWebView/WebPage。

出于好奇,为什么不在内容中设置一些CSS呢?像<style>body{font:serif}</style>这样简单的东西就可以解决问题了... - John Chadwick
对于此应用程序要编辑的HTML文档,有一个标准,即它们不指定字体或字体系列,而是默认使用比例字体。这样用户就可以通过浏览器首选项始终控制外观。我无法弄清楚的是,如何在QWebPage中实现“浏览器首选项”等效功能。 - user405
2个回答

5

要设置所有网页的默认字体,可以使用QWebSettings来更改标准字体的字体系列,并更改默认字体大小的字体大小:

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

如果HTML包含未定义的字体族,例如p{font-family:"xyz"},那么同样的事情就不起作用了。在这种情况下,网页不会使用默认字体,为什么? - Ashish
@Ashish。抱歉 - 我不知道。其他人可能会知道,所以你应该提出一个新问题。 - ekhumoro

0

QWebSettings 似乎拥有你所需要的一切:

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

我还没有测试过,但你缺少什么呢?你可能想要看看基于Qt Webkit的Arora Web浏览器。


不行。setFontFamily用于为通用FontFamily设置特定的字体名称,例如当我打印查询fontFamily(QWebSettings.SerifFont)时,我得到“Times New Roman”。我可以调用setFontFamily(QWebSettings.SerifFont,“Palatino”),然后fontFamily将回显“Palatino”。大惊小怪——网页仍然使用默认的SansSerifFont显示。问题是,如何让QWebPage使用SerifFont而不是SansSerifFont进行呈现。 - user405
哦 —— 将sansSerifFont设置为“Palatino” —— 天哪,那可以吗? 我的电脑可能会爆炸 —— 等一下我试试… - user405
不行。我已经使用settings.setFontFamily(QWebSettings.SansSerifFont,QString("Palatino"))进行设置,并通过settings.fontFamily读取它,但没有任何变化。我还使用QWebSettings.globalSettings().setFontFamily(QWebSettings.SansSerifFont,QString("Palatino"))进行了设置。页面显示没有变化,仍然是无衬线字体。 - user405
所以,以防“Palatino”作为字体族存在问题,我使用了self.settings.setFontFamily(QWebSettings.SansSerifFont,self.settings.fontFamily(QWebSettings.SerifFont))。也就是说,从衬线字体(即 Times New Roman)中获取默认字体族,并将其安装在无衬线字体上。但是没有任何变化。 - user405
感谢您提供的提示和Arora链接。这是一个很大的程序,但我找到了设置对话框,在那里他们展示了QFontDialog并将字体名称和大小保存到标签standardLabel中。然而,这就是尽头了,我找不到他们在哪里使用该标签。 - user405
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接