未解決の型

このカテゴリには以下の警告が含まれます:

  • 型は使用されているが解決されていない
  • メソッドの戻り値の型に型が見つかりませんでした。
  • メソッドのパラメータの型に型が見つかりませんでした。
  • プロパティに不完全な型があります。
  • 依存関係のエントリがないか、宣言的に型が公開されていない可能性があります。
  • 依存関係のエントリがないか、宣言的に型が公開されていない可能性があります。
  • ネームスペースに型が見つかりません。

これらの警告は、QMLモジュールを使っているか書いているかによりますが、通常、インポートがないか、QMLモジュールが不完全であることを示しています。

この警告カテゴリーはqmllintによって[unresolved-type]

QMLモジュールをお使いの方へ

何が起こりましたか?

QMLツールで検出されなかった型を使用しました。通常、typoの可能性、importの欠落、importパスの不適切な設定を示します。

なぜ悪いのですか?

その型はQMLツールでも見つからず、QMLエンジンでも見つからない可能性が高いです。

タイプミス

import QtQuick

Itme { ... }

この警告を修正するには、タイプミスを修正してください:

import QtQuick

Item { ... }

import文の欠落

Item { ... }

この警告を修正するには、Item を公開しているモジュールをインポートしてください:

import QtQuick

Item { ... }

import文を追加しても解決しない場合は、importパスを確認してください。

QML Language Server経由でこの警告が表示される場合は、セットアップが不完全である可能性があります。

QMLモジュール作者の方へ

何が起こったのですか?

QMLモジュールの型が見つかりません。この型は、QMLに直接、あるいは間接的に公開している型です:

  • 基本型
  • プロパティ型
  • シグナル、スロット、Q_INVOKABLE パラメータ型
  • Q_INVOKABLE 戻り値型

未解決の型がモジュールから公開されている場合、宣言的な型登録が行われていない可能性があります。

そうでない場合、あなたのQMLモジュールは未解決の型を公開しているQMLモジュールに宣言されていない依存関係を持つ可能性があります。

これはなぜでしょうか?

QMLツールはあなたの型に対して動作しませんし、あなたのQMLモジュールのユーザは修正できない偽の警告を受けることになります。

型の登録がない

宣言的に型を登録する方法についてはC++ から QML 型を定義するを参照してください。QMLに直接・間接的に公開されるすべての型と列挙型が登録されていることを確認してください。

QMLモジュールの依存関係の欠落

MyItem を QML モジュールの C++ 型とします:

class MyItem: public QQuickItem {
    ...
    QML_ELEMENT
    ...
    Q_PROPERTY(SomeType someProperty READ someProperty WRITE setSomeProperty NOTIFY somePropertyChanged)
    ...
}

QQuickItem またはSomeType を最初に解決できないと、QMLツールはMyItem を正しく解決できません。QQuickItemQtQuick に、SomeTypeSomeModule にある場合、QMLモジュール定義の中で、これらのC++依存関係を記述する必要があります。

そのためには、QMLモジュール定義に依存関係を追加します。これは例えば、DEPENDENCIES で行うことができます:

qt_add_qml_module(
    ...
    DEPENDENCIES
        QtQuick # for QQuickItem to be resolved
        SomeModule # for SomeType to be resolved
)

詳しくはQML モジュール間の C++ 依存関係の宣言を参照してください。

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