编辑:在@eyllanesc 评论之后,这是一个托管在 github 上的最小示例。该测试在 OS X 10.12 上的 Qt5.9 上运行。
基础 HTML
让我们创建一个通过相对路径加载图像的最小示例 HTML,test.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直接在浏览器中打开时,它会按预期显示图像。
qrc 和相对路径的问题
现在,如果我们将这两个资源都嵌入到 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
)并转到 Network 选项卡,我们可以看到甚至没有尝试加载img.jpg。
用绝对路径,没问题
如果图像元素更改为<img src="qrc:///img.jpg"></img>
,则一切正常并加载图像。
问题
- 这是qrc系统的设计限制吗?
- 有没有办法解决它?(不使用该方案对绝对路径进行硬编码)