不適格

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

修飾されていないアクセス

何が起こりましたか?

親要素にidなしでアクセスしました。

これはなぜ悪いのでしょうか?

これはコードを読みにくくし、パフォーマンスを低下させます。

import QtQuick

Item {
    property int helloWorld
    Item {
        property int unqualifiedAccess: helloWorld + 1 // not ok: Unqualified access here.
    }
}

この警告を修正するには、idで親オブジェクトを参照します。オブジェクトに現在idがない場合は、最初にidを追加する必要があります。

import QtQuick

Item {
    id: root
    property int helloWorld
    Item {
        property int unqualifiedAccess: root.helloWorld + 1 // ok: this access is qualified now!
    }
}

不明な添付/グループ化されたプロパティ・スコープ

何が起こりましたか?

見つからないアタッチド・プロパティ・タイプまたはグループ化プロパティを使用しました。これはタイプミスやQMLモジュールの依存関係の欠落が原因である可能性があります。

注意: 外部依存関係を持つQMLモジュールをインポートする場合、それらが実際にインストールされているか、インポートパスの中にあるかどうかを確認してください。

なぜ悪いのか?

付属プロパティのスコープが不明なコンポーネントや、グループ化されたプロパティが不明なコンポーネントは、実行時に作成されません。

Item の(存在しない)アタッチド・プロパティ、またはItem の(存在しない)グルー プ化されたプロパティgrouped を使ってみましょう:

import QtQuick

Item {
    Item.helloAttached: 44 // not ok: unknown attached property scope Item. [unqualified]
    grouped.helloGrouped: 44 // not ok: unknown grouped property scope grouped. [unqualified]
}

確かに、Item にはアタッチド型もitem というグループ化されたプロパティもありません。この警告を修正するには、attachedタイプとgroupedプロパティを削除してください。

アタッチド・プロパティの使用方法については「アタッチド・プロパティとアタッチド・シグナル・ハンドラ」を、グループ化プロパティの使用方法については「グループ化プロパティ」を参照してください。

ハンドラに一致するシグナルが見つかりません

何が起こったのでしょうか?

シグナルハンドラを使用したシグナルが見つかりません。これは、シグナルハンドラのタイプミスか、QMLモジュールの依存関係が見つからないことが原因です。

注意: シグナルハンドラの名前はon にシグナル名を大文字で連結したものです。例えば、onHelloWorld はシグナルhelloWorld を処理し、on_helloWorld_helloWorld を処理します。

注意 : QMLモジュールの外部依存関係をインポートする場合、それらが実際にインストー ルされているか、インポートパスの中に含まれているかを確認してください。

これはなぜ悪いのでしょうか?

未知のシグナルハンドラを持つコンポーネントは実行時に生成されません。

(存在しない)シグナルmySignal のシグナルハンドラを書いてみましょう:

import QtQuick

Item {
    onMySignal: console.log("hello") // not ok: no matching signal found for handler "onMySignal" [unqualified]
}

確かに、このItem にはmySignal というシグナルはありません。この警告を修正するには、シグナルハンドラを削除するか、存在しないシグナルを追加してください。

Connectionsでシグナルハンドラを暗黙的に定義することは推奨されません。

何が起こったのでしょうか?

Connectionsタイプでシグナルハンドラを使用しました。

これはなぜ悪いのですか?

これは非推奨です。

import QtQuick

Window {
    id: root
    property int myInt

    Connections {
        target: root
        onMyIntChanged: console.log("new int", myInt)
    }
}

この警告を修正するには、シグナルハンドラのバインディングを関数に置き換えてください:

import QtQuick

Window {
    id: root
    property int myInt

    Connections {
        target: root
        function onMyIntChanged() { console.log("new int", myInt) }
    }
}

QML Coding Conventions - Unqualified Access」も参照してください

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