2012-03-15 68 views
2

我正在尝试设置外部CSS的QWebView有:设置外部CSS的QWebView与资源文件

ui->webView->settings()->setUserStyleSheetUrl(QUrl::fromLocalFile(":/default.css"));

只包含:

body { color: red; }

但它不工作任何页面(没有什么是红色的)

另外我再次检查:

ui->webView->page()->mainFrame()->toHtml();

但是没有应用CSS。

+0

路径'“:/default.css”'指定一个存储为已编译资源的文件。这是你的意图吗? – 2012-03-15 02:58:46

+0

@ArnoldSpence是的,我使用Qt的资源文件 – daisy 2012-03-15 07:55:17

回答

4

显然,QUrl::fromLocalFile不适用于资源文件。问题和解决方法在this forum thread讨论:

不仅QRC方案(通常情况下)不与任何 应用程序相关联,但请记住,资源的 可执行文件里面编译。第三方程序应该如何访问它们?

解决方法是将文件从资源复制到 临时文件/目录,然后使用QUrl :: fromLocalFile + QDesktopServices :: openUrl。

+0

这解释了很多,谢谢! – daisy 2012-03-16 01:22:06

0

更简单的解决方案是使用

ui->webView->settings()->setUserStyleSheetUrl(QUrl("qrc:/filename.css"));
如果从应用程序本身打开资源,则使用QUrl :: fromLocalFile()根本不是必需的。除非将URL传递给外部应用程序,否则不需要将其写入外部文件。