不適格
この警告カテゴリーは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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。