编辑:关注@eyllanesc评论,此处为a minimal example hosted on github。测试在OS X 10.12的Qt5.9上运行。
让我们创建一个通过相对路径 test.html 加载图片的最小示例HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
</head>
<body>
<div>Image:</div>
<img src="img.jpg"></img>
</body>
</html>
此文件在包含 img.jpg 的文件夹中创建(应该是可爱小狗的照片)
直接在浏览器中打开 test.html 时,它会按预期显示图像。
现在,如果我们将两个资源嵌入到Qt应用程序中,请使用以下.qrc文件:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file alias="test.html">resources/web/test.html</file>
<file alias="img.jpg">resources/web/img.jpg</file>
</qresource>
</RCC>
我们可以使用以下格式的代码在QWebEngineView
中打开HTML页面:
mWebView->load(QUrl{"qrc:///test.html"});
页面已加载,但图片未加载。
启用Web开发人员控制台(通过运行带有参数--remote-debugging-port=8888
的应用程序)并转到“网络”标签,我们可以看到甚至没有尝试来加载 img.jpg
如果图像元素已更改为<img src="qrc:///img.jpg"></img>
,则一切正常并且图像已加载。
答案 0 :(得分:1)
主要问题似乎是如何声明.html文件的URL:
在@ ad-n的情况下,他跟随docs:
...
例如,文件路径:/images/cut.png或URL qrc:/// images / cut.png可以访问cut.png文件,其文件 应用程序源树中的位置是images / cut.png。这个可以 使用文件标记的别名属性进行更改:
...
并使用:qrc:///home.html
但在我的情况下,我使用Qt Creator为我提供了网址,如下图所示:
并使用:qrc:/home.html
这就是我处理案件的原因。
答案 1 :(得分:0)
调查问题,结果是删除了 .rcc 文件中的所有别名,并相应地更改了代码中的资源路径,使得可以使用相对路径。
以下是对来源的更改:
<!DOCTYPE RCC><RCC version="1.0">
<qresource>
<file>resources/web/test.html</file>
<file>resources/web/img.jpg</file>
</qresource>
</RCC>
-
mWebView->load(QUrl{"qrc:///resources/web/test.html"});
我还不接受这个答案,因为它感觉像是一种解决方法。希望有一种方法可以让它与别名一起使用。