Auf dieser Seite

Eigenschaftsüberschreibung

Diese Warnkategorie wird von qmllint als „ [property-override] “ bezeichnet.

Das Member überschreibt nichts

Was ist passiert?

Sie haben eine Eigenschaft als „ override “ markiert, ohne etwas zu überschreiben. Der Basistyp der aktuellen Komponente verfügt über keine gleichnamige Eigenschaft, die als „ virtual “ markiert ist.

Warum ist das ein Problem?

Die QML-Engine löst einen Laufzeitfehler aus, wenn sie auf eine solche Eigenschaft stößt.

Beispiel

import QtQuick

Item {
    component Base: Item { virtual property int myProperty; }
    Base {
        override property int myP: 42
    }
}

Um diese Warnung zu beheben, können Sie:

  • Entfernen Sie die Markierung „ override “.
  • Überprüfen Sie noch einmal, ob der Eigenschaftsname mit dem Namen einer „ virtual “- oder „ override “-Eigenschaft im Basistyp der aktuellen Komponente übereinstimmt.
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
    }
}

Mitglied überschreibt finales Mitglied

Was ist passiert?

Sie haben eine Eigenschaft überschattet, die als „final“ gekennzeichnet ist.

Warum ist das ein Problem?

Eigenschaften werden als „final“ markiert, um ein Überschreiben und Überschatten zu verhindern. Die QML-Engine löst einen Laufzeitfehler aus, wenn sie auf die überschattende Eigenschaft stößt.

Beispiel

import QtQuick

Item {
    component Base: Item { final property int myFinal; }
    Base {
        property int myFinal: 42
    }
}

Um diese Warnung zu beheben, haben Sie folgende Möglichkeiten:

  • Benennen Sie die überschreibende oder überschriebene Eigenschaft um.
  • Ersetzen Sie die Markierung „ final “ durch „ virtual “ oder „ override “ und fügen Sie der überschreibenden Eigenschaft das fehlende „ override “ hinzu.
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
    }
}

Mitglied überschreibt finales Mitglied

Was ist passiert?

Sie haben eine Eigenschaft überschrieben, die als „final“ gekennzeichnet ist.

Warum ist das schlecht?

Als „ final “ gekennzeichnete Eigenschaften verhindern das Überschreiben und das Überschatten. Die QML-Engine löst einen Laufzeitfehler aus, wenn sie auf die überschreibende Eigenschaft stößt.

Beispiel

import QtQuick

Item {
    component Base: Item { final property int myFinal; }
    Base {
        override property int myFinal: 42
    }
}

Um diese Warnung zu beheben, haben Sie folgende Möglichkeiten:

  • Benennen Sie die überschattende oder überschattete Eigenschaft um und entfernen Sie die Markierung „ override “.
  • Ersetzen Sie die Markierung „ final “ durch „ virtual “ der überschriebenen Eigenschaft.
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
    }
}

Mitglied überschattet Mitglied

Was ist passiert?

Sie haben eine „ virtual “- oder „ override “-Eigenschaft überschattet, ohne „ final “ oder „ override “ zu verwenden.

Warum ist das schlecht?

Eigenschaften, die „ virtual “-Eigenschaften überschatten, benötigen eine Markierung wie „ override “ oder „ final “. Die QML-Engine gibt eine Laufzeitwarnung aus, wenn sie auf eine solche Eigenschaft stößt.

Beispiel

import QtQuick

Item {
    component Base: Item { virtual property int myProperty; }
    Base {
        property int myProperty: 42
    }
}

Um diese Warnung zu beheben, machen Sie die überschattende Eigenschaft zu „ override “ oder „ final “.

import QtQuick

Item {
    component Base: Item { virtual property int myProperty; }
    Base {
        override property int myProperty: 42 // could also be final
    }
}

Ein Mitglied überschreibt ein nicht-virtuelles Mitglied

Was ist passiert?

Sie haben eine Eigenschaft überschrieben, die nicht als „ virtual “ oder „ override “ gekennzeichnet war.

Warum ist das ein Problem?

Eigenschaften, die überschrieben werden können, müssen dies über „ virtual “ oder „ override “ deklarieren. Die QML-Engine löst einen Laufzeitfehler aus, wenn sie auf die überschriebene Eigenschaft stößt, bei der die Markierung „ virtual “ oder „ override “ fehlt.

Beispiel

import QtQuick

Item {
    component Base: Item { property int myProperty; }
    Base {
        override property int myProperty: 42
    }
}

Um diese Warnung zu beheben, benennen Sie die überschreibende Eigenschaft um oder kennzeichnen Sie die überschriebene Eigenschaft als „ virtual “ oder „ override “.

import QtQuick

Item {
    component Base: Item { virtual property int myProperty; }
    Base {
        override property int myProperty: 42
    }
}

Eigenschaft existiert bereits im Basistyp

Was ist passiert?

Sie haben eine Eigenschaft überschrieben, ohne „ virtual “, „ override “ oder „ final “ zu verwenden.

Warum ist das schlecht?

Eigenschaften, die überschrieben werden können, müssen über „ virtual “ oder „ override “ deklariert werden. Die QML-Engine gibt zur Laufzeit eine Warnung aus, wenn sie auf die überschriebene Eigenschaft stößt.

Beispiel

import QtQuick

Item {
    component Base: Item { property int myProperty; }
    Base {
        property int myProperty: 42
    }
}

Um diese Warnung zu beheben, benennen Sie die überschreibende oder überschriebene Eigenschaft um oder fügen Sie die fehlenden Markierungen virtual, override oder final hinzu.

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.