如何使 QWebView/QWebPage 默认为衬线字体?

Posted

技术标签:

【中文标题】如何使 QWebView/QWebPage 默认为衬线字体?【英文标题】:How can I make QWebView/QWebPage default to serif font? 【发布时间】:2012-01-27 02:30:18 【问题描述】:

使用 PyQt4,我创建了一个 QWebView,然后使用它的 sethtml() 方法加载它。 HTML 在大多数方面都能正确显示,但始终使用默认的无衬线字体。

当外部浏览器加载相同的 HTML 纯文本时,例如Firefox,它以默认衬线字体显示。我希望 webview 也这样做。

我已阅读有关 QWebView、QWebPage 和 QWebSettings 的文档,但没有看到任何设置默认“标准”或“比例”字体的方法,可与浏览器的首选项设置相媲美。我查看了 QStyleSheets,但它们似乎不适用于 QWebView/WebPage。

【问题讨论】:

出于好奇,为什么不在内容中设置一些CSS?像<style>bodyfont:serif</style> 这样简单的东西应该可以解决问题... 本应用编辑的HTML文档,有一个标准是不指定font或font-family,默认为比例字体。这样用户就可以始终通过浏览器首选项控制外观。我想不通的是,如何做一个与 QWebPage 等效的“浏览器首选项”。 【参考方案1】:

要为所有网页设置默认字体,请使用QWebSettings 更改StandardFont 的字体系列,并更改DefaultFontSize 的字体大小:

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

【讨论】:

如果 html 包含未定义的字体系列,例如pfont-family:"xyz"..在这种情况下网页没有使用默认字体,为什么? @Ashish。抱歉——我不知道。其他人可能会这样做,所以你应该提出一个新问题。【参考方案2】:

QWebSettings 似乎拥有您需要的一切:

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

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

【讨论】:

不。 setFontFamily 建立用于通用 FontFamily 的特定字体名称,例如当我打印查询 fontFamily(QWebSettings.SerifFont) 时,我得到“Times New Roman”。我可以调用 setFontFamily(QWebSettings.SerifFont,"Palatino") 和 viola,fontFamily 会回显“Palatino”。大呼——仍然使用默认的 SansSerifFont 显示网页。问题是,如何让 QWebPage 使用 SerifFont 而不是 SansSerifFont 进行渲染。 ...我应该说,我认为这就是问题所在,我可能是错的(我经常这样) 我可能在这里遗漏了一些明显的东西,但你能不能也为 SansSerifFont 设置字体? oooh -- 将 sansSerifFont 设置为 "Palatino" -- 我的上帝允许这样做吗?我的电脑可能会爆炸——等一下,我试试看…… 不。我做了 settings.setFontFamily(QWebSettings.SansSerifFont,QString("Palatino")) 并用 settings.fontFamily 读回它,它没有任何区别。我也做了 QWebSettings.globalSettings().setFontFamily(QWebSettings.SansSerifFont,QString("Palatino"))。显示的页面没有变化,仍然是无衬线字体。

以上是关于如何使 QWebView/QWebPage 默认为衬线字体?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 HTML 可折叠按钮默认为展开?

如果不存在,如何使 Javascript 参数默认为某个值? [复制]

Django 如何使 ForeignKey 使用默认值?

如何使 ListView 的第一项在启动时被选为默认值?

如何在 MySQL Workbench 中使默认 blob 成为图像?

如何使 jquery datepicker 默认日期为 mm-yyyy(字面意思)