このページについて

プロパティのオーバーライド

この警告カテゴリは、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.