edit : @eyllanesc のコメントに続いて、github でホストされている最小限の例を次に示します。テストは、OS X 10.12 上の Qt5.9 で実行されます。
ベース HTML
相対パス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をブラウザーで直接開くと、期待どおりに画像が表示されます。
qrc と相対パスの問題
ここで、次の .qrc ファイルを使用して、両方のリソースを Qt アプリケーションに埋め込むとします。
<!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>
、すべてが正常に機能し、画像が読み込まれます。
質問
- これは設計による qrc システムの制限ですか?
- それを回避する方法はありますか?(スキームで絶対パスをハードコーディングせずに)