問題タブ [qt-resource]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
qt - 静的 HTML リソースからアクセスできるように Qt リソースに画像をパックする方法
QWebEngineView を使用して静的 HTML ページを表示する Qt Widgets プロジェクトがあります。そのページには、Qt 実行可能ファイル/インストーラーで「パック」する必要があるイメージが表示されます。QRCファイルに画像を追加してHTMLファイルから参照することはできますか?
「qrc:/image...」表記を使用して画像にアクセスしようとしましたが、QWebEngineView がプロジェクトのリソースとは関係のない組み込みブラウザーを表示することを完全に理解しています。別の方法?
c++ - Qtファイルパスをリソースから絶対パスに変換するには?
次のような絶対ファイルパスを受け取る必要があります
C:/Users/Dima/YandexDisk/_Application/WeldAnalysis/ExperimentDefaults.xlsx
のようなQRCファイルのパスから
:/Data/ExperimentDefaults.xlsx
.
これどうやってするの?
c++ - ページが Qt RCC リソース システムからロードされている場合、QWebEngineView は html ページから相対リソースをロードしません。
edit : @eyllanesc のコメントに続いて、github でホストされている最小限の例を次に示します。テストは、OS X 10.12 上の Qt5.9 で実行されます。
ベース HTML
相対パスtest.htmlで画像をロードする HTML の最小限の例を作成しましょう。
このファイルは、 img.jpg (愛らしい子犬の写真である必要があります)を含むフォルダーに作成されます。
test.htmlをブラウザーで直接開くと、期待どおりに画像が表示されます。
qrc と相対パスの問題
ここで、次の .qrc ファイルを使用して、両方のリソースを Qt アプリケーションに埋め込むとします。
QWebEngineView
次の形式のコードを使用して、HTML ページを開くことができます。
ページは読み込まれますが、画像は読み込まれません。
(引数 を指定してアプリを実行することにより) Web 開発者コンソールを有効に--remote-debugging-port=8888
し、[ネットワーク] タブに移動すると、 img.jpgを読み込もうとしてさえいないことがわかります。
絶対パスで問題なし
画像要素が に変更された場合<img src="qrc:///img.jpg"></img>
、すべてが正常に機能し、画像が読み込まれます。
質問
- これは設計による qrc システムの制限ですか?
- それを回避する方法はありますか?(スキームで絶対パスをハードコーディングせずに)
c++ - Qtリソースシステムのファイルシステムパスに対するプレフィックスの利点は何ですか?
Qt リソース ファイル .qrcを使用すると、埋め込みファイルを異なるプレフィックスに分割できます
上記の例のようなプレフィックスを使用して、開発者がファイルシステム階層をやり直しているのをよく見かけます。しかし、私の意見では、呼び出し元コードの観点からはこれとまったく同じです。
どちらの場合も、同じ構文で C++ のファイルを使用できます:/qml/CustomWidget.qml
。
ファイルシステムパスよりもプレフィックス+エイリアスを使用する利点はありますか?