我正在尝试设置外部CSS的QWebView有:设置外部CSS的QWebView与资源文件
ui->webView->settings()->setUserStyleSheetUrl(QUrl::fromLocalFile(":/default.css"));
只包含:
body { color: red; }
但它不工作任何页面(没有什么是红色的)
另外我再次检查:
ui->webView->page()->mainFrame()->toHtml();
但是没有应用CSS。
我正在尝试设置外部CSS的QWebView有:设置外部CSS的QWebView与资源文件
ui->webView->settings()->setUserStyleSheetUrl(QUrl::fromLocalFile(":/default.css"));
只包含:
body { color: red; }
但它不工作任何页面(没有什么是红色的)
另外我再次检查:
ui->webView->page()->mainFrame()->toHtml();
但是没有应用CSS。
显然,QUrl::fromLocalFile
不适用于资源文件。问题和解决方法在this forum thread讨论:
不仅QRC方案(通常情况下)不与任何 应用程序相关联,但请记住,资源的 可执行文件里面编译。第三方程序应该如何访问它们?
解决方法是将文件从资源复制到 临时文件/目录,然后使用QUrl :: fromLocalFile + QDesktopServices :: openUrl。
这解释了很多,谢谢! – daisy 2012-03-16 01:22:06
更简单的解决方案是使用
ui->webView->settings()->setUserStyleSheetUrl(QUrl("qrc:/filename.css"));如果从应用程序本身打开资源,则使用QUrl :: fromLocalFile()根本不是必需的。除非将URL传递给外部应用程序,否则不需要将其写入外部文件。
路径'“:/default.css”'指定一个存储为已编译资源的文件。这是你的意图吗? – 2012-03-15 02:58:46
@ArnoldSpence是的,我使用Qt的资源文件 – daisy 2012-03-15 07:55:17