プロパティのオーバーライド
この警告カテゴリは、qmllint によって「[property-override] 」と表記されます。
メンバーは何もオーバーライドしていません
何が起きたのですか?
何もオーバーライドしていないにもかかわらず、プロパティにoverride というマークを付けました。現在のコンポーネントの基底型には、virtual としてマークされた同名のプロパティがありません。
なぜ問題なのか?
QML エンジンは、このようなプロパティを検出すると、実行時エラーをスローします。
例
import QtQuick
Item {
component Base: Item { virtual property int myProperty; }
Base {
override property int myP: 42
}
}この警告を解消するには、次の方法があります:
overrideマーカーを削除します。- プロパティ名が、現在のコンポーネントの基底型にある
virtualまたはoverrideプロパティの名と一致していることを再確認します。
import QtQuick
Item {
component Base: Item { virtual property int myProperty; }
Base {
property int myP: 42 // solution 1: remove override
override property int myProperty: 42 // solution 2: fix spelling
}
}メンバが final メンバをシャドウしている
何が起きたのですか?
final としてマークされたプロパティをシャドウしました。
なぜそれが問題になるのでしょうか?
プロパティは、オーバーライドやシャドウイングを防ぐために final としてマークされます。QML エンジンは、シャドウイングされたプロパティを検出すると、実行時エラーをスローします。
例
import QtQuick
Item {
component Base: Item { final property int myFinal; }
Base {
property int myFinal: 42
}
}この警告を解消するには、以下の方法があります:
- シャドウイングしているプロパティ、またはシャドウイングされているプロパティの名前を変更します。
finalというマーカーをvirtualまたはoverrideに置き換え、オーバーライドするプロパティに不足しているoverrideを追加します。
import QtQuick
Item {
// solution 1: rename the property
component Base: Item { final property int myFinal; }
Base {
property int myFinal2: 42
}
// solution 2: replace the final marker and add override
component Base2: Item { virtual property int myFinal; }
Base2 {
override property int myFinal: 42
}
}メンバーが final メンバーをオーバーライドしています
何が起きたのでしょうか?
final としてマークされたプロパティをオーバーライドしてしまいました。
なぜそれが問題なのでしょうか?
final とマークされたプロパティは、オーバーライドやシャドウイングを許可しません。QML エンジンは、オーバーライドされたプロパティを検出すると、実行時エラーをスローします。
例
import QtQuick
Item {
component Base: Item { final property int myFinal; }
Base {
override property int myFinal: 42
}
}この警告を解消するには、次のいずれかの方法があります:
- シャドウイングするプロパティまたはシャドウイングされるプロパティの名前を変更し、
overrideマーカーを削除します。 - オーバーライドされたプロパティの
finalマーカーをvirtualに置き換える。
import QtQuick
Item {
// solution 1: remove override and rename
component Base: Item { final property int myFinal; }
Base {
property int myFinal2: 42
}
// solution 2: replace final marker with virtual
component Base2: Item { virtual property int myFinal; }
Base2 {
override property int myFinal: 42
}
}メンバがメンバをシャドウイングしている
何が起こったのか?
`final ` または `override` を使用せずに、virtual またはoverride プロパティをシャドウ化しました。
なぜそれが問題なのでしょうか?
virtual プロパティをシャドウするプロパティには、override またはfinal マーカーが必要です。QML エンジンは、そのようなプロパティを検出すると、実行時の警告を発します。
例
import QtQuick
Item {
component Base: Item { virtual property int myProperty; }
Base {
property int myProperty: 42
}
}この警告を解消するには、シャドウイングするプロパティをoverride またはfinal に設定します。
import QtQuick
Item {
component Base: Item { virtual property int myProperty; }
Base {
override property int myProperty: 42 // could also be final
}
}メンバーが非仮想メンバーをオーバーライドしている
何が起きたのか?
virtual またはoverride とマークされていないプロパティをオーバーライドしてしまいました。
なぜ問題になるのですか?
オーバーライド可能なプロパティは、virtual またはoverride を使用して宣言する必要があります。QML エンジンは、virtual またはoverride マーカーがないオーバーライドされたプロパティを検出すると、実行時エラーをスローします。
例
import QtQuick
Item {
component Base: Item { property int myProperty; }
Base {
override property int myProperty: 42
}
}この警告を解消するには、オーバーライドするプロパティの名前を変更するか、オーバーライドされたプロパティに `virtual ` または `override` のマークを付ける必要があります。
import QtQuick
Item {
component Base: Item { virtual property int myProperty; }
Base {
override property int myProperty: 42
}
}プロパティが基底型にすでに存在します
何が起こったのか?
virtual 、override 、またはfinal を使用せずにプロパティをシャドウしました。
なぜ問題になるのですか?
オーバーライド可能なプロパティは、virtual 、override 、または を使用して宣言する必要があります。QML エンジンは、シャドウイングされたプロパティを検出すると、実行時に警告を出します。
例
import QtQuick
Item {
component Base: Item { property int myProperty; }
Base {
property int myProperty: 42
}
}この警告を解消するには、シャドウイングするプロパティまたはシャドウイングされるプロパティの名前を変更するか、不足しているvirtual 、override 、またはfinal マーカーを追加してください。
import QtQuick
Item {
// solution 1: rename one of the properties
component Base: Item { property int myProperty; }
Base {
property int myProperty2: 42
}
// solution 2: add missing markers
component Base2: Item { virtual property int myProperty; }
Base2 {
final property int myProperty: 42 // could also be override
}
}© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.