QQmlAbstractUrlInterceptor Class

QML ファイルの読み込みを制御します。詳細...

Header: #include <QQmlAbstractUrlInterceptor>
CMake: find_package(Qt6 REQUIRED COMPONENTS Qml)
target_link_libraries(mytarget PRIVATE Qt6::Qml)
qmake: QT += qml

パブリック型

enum DataType { QmldirFile, JavaScriptFile, QmlFile, UrlString }

パブリック関数

QQmlAbstractUrlInterceptor()
virtual ~QQmlAbstractUrlInterceptor()
virtual QUrl intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type) = 0

詳しい説明

QQmlAbstractUrlInterceptorは、QMLエンジンが使用する前にURLを変更するためのインターフェースです。これは主に、現在のプラットフォーム用に異なるグラフィカルアセットを選択するなど、ファイルURLを他のファイルURLに変更するのに便利です。

相対URLは、現在のQMLコンテキストのファイルパスに対して解決された後、インターセプトされます。URLの遮断は、読み込まれたQMLファイルのベースパスを設定した後にも行われます。つまり、読み込まれたQMLファイルのコンテンツはインターセプトされたURLを使用しますが、ファイル内部ではインターセプト前のURLが相対パスの解決に使用されます。これにより、インターセプトされたコンテンツ内のすべてのパス(またはローカルタイプ)に異なる相対パスを挿入することなく、.qmlファイルの読み込みをインターセプトすることができます。

setNetworkAccessManagerFactory と比較して、QQmlAbstractUrlInterceptor はローカルファイルや埋め込みリソースファイルを含むすべての URL とパスに影響します。QQmlAbstractUrlInterceptor は同期的であり、非同期的なファイルに対しては非同期的なスキーム (http や独自のスキームQNetworkAccessManager など) を持つ URL を返さなければなりません。QQmlAbstractUrlInterceptor を使用すると、ファイルの URL を、独自のカスタ ムQNetworkAccessManager で処理されるネットワーク型 URL に変更することができます。

カスタム・ネットワーク・スキームのサポートを実装するには、 setNetworkAccessManagerFactory を参照してください。

メンバ タイプ ドキュメント

enum QQmlAbstractUrlInterceptor::DataType

URLの遮断を行う場所を指定する。

QMLは型を特定するためにqmldirファイルを読み込むため、QMLの型を読み込む際には2つのURLが存在します。型を探すために使われる(おそらく暗黙的な)qmldirのURLと型を定義するファイルのURLです。この2つのURLをインターセプトすることで、複雑なURLの置換や同じファイルに対する2重のURLの置換が行われることになります。

定数説明
QQmlAbstractUrlInterceptor::QmldirFile2傍受されるURLはQmldirファイルのためのものです。QmlFileではなく、これをインターセプトすることで、サブツリー全体を入れ替えることができます。
QQmlAbstractUrlInterceptor::JavaScriptFile1インターセプトされるURLはJavascriptファイルのインポートです。
QQmlAbstractUrlInterceptor::QmlFile0インターセプトされるURLはQmlファイルです。Qmldirファイルではなく、これをインターセプトすることで、QMLファイルのベースディレクトリはそのままになり、ファイルを別のファイルに置き換えるような動作をします。
QQmlAbstractUrlInterceptor::UrlString0x1000インターセプトされる URL は QML ファイルの url プロパティであり、 エンジンを通してファイルをロードするために使われるものではありません。

メンバー関数ドキュメント

[constexpr noexcept] QQmlAbstractUrlInterceptor::QQmlAbstractUrlInterceptor()

QQmlAbstractUrlInterceptor のコンストラクタです。

[virtual constexpr noexcept] QQmlAbstractUrlInterceptor::~QQmlAbstractUrlInterceptor()

QQmlAbstractUrlInterceptor のデストラクタです。

[pure virtual] QUrl QQmlAbstractUrlInterceptor::intercept(const QUrl &url, QQmlAbstractUrlInterceptor::DataType type)

純粋な仮想関数で、url をインターセプトすることができます。 返される値は、url の新しい値とみなされます。インターセプトされる url のタイプはtype 変数で指定します。

この関数は複数のスレッドから同時に呼び出される可能性があるため、スレッドセーフに実装する必要があります。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。