Sur cette page

Remplacement de propriété

Cette catégorie d'avertissement est orthographiée « [property-override] » par qmllint.

Le membre ne remplace rien

Que s'est-il passé ?

Vous avez marqué une propriété comme « override » sans rien redéfinir. Le type de base du composant actuel ne possède aucune propriété du même nom marquée comme « virtual ».

Pourquoi est-ce un problème ?

Le moteur QML génère une erreur d'exécution lorsqu'il rencontre une telle propriété.

Exemple

import QtQuick

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

Pour corriger cet avertissement, vous pouvez :

  • Supprimer le marqueur « override ».
  • Vérifier que le nom de la propriété correspond bien au nom d’une propriété « virtual » ou « override » dans le type de base du composant actuel.
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
    }
}

Le membre « shadow » est un membre « final »

Que s'est-il passé ?

Vous avez masqué une propriété marquée comme « final ».

Pourquoi est-ce un problème ?

Les propriétés sont marquées comme « final » pour empêcher leur redéfinition et leur masquage. Le moteur QML génère une erreur d'exécution lorsqu'il rencontre la propriété masquée.

Exemple

import QtQuick

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

Pour corriger cet avertissement, vous pouvez :

  • Renommer la propriété qui masque ou celle qui est masquée.
  • Remplacer le marqueur « final » par « virtual » ou « override » et ajouter l’ override e manquante à la propriété redéfinie.
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
    }
}

Un membre remplace un membre final

Que s’est-il passé ?

Vous avez redéfini une propriété marquée comme « final ».

Pourquoi est-ce un problème ?

Les propriétés marquées comme « final » empêchent toute redéfinition et tout masquage. Le moteur QML génère une erreur d'exécution lorsqu'il rencontre la propriété redéfinie.

Exemple

import QtQuick

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

Pour corriger cet avertissement, vous pouvez :

  • Renommer la propriété masquante ou masquée, puis supprimer le marqueur « override ».
  • Remplacer le marqueur « final » par « virtual » de la propriété redéfinie.
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
    }
}

Membre masquant un membre

Que s'est-il passé ?

Vous avez masqué une propriété « virtual » ou « override » sans utiliser « final » ou « override ».

Pourquoi est-ce un problème ?

Les propriétés qui masquent des propriétés d’ virtual doivent être accompagnées d’un marqueur override ou final. Le moteur QML génère un avertissement d’exécution lorsqu’il rencontre une telle propriété.

Exemple

import QtQuick

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

Pour corriger cet avertissement, remplacez la propriété qui fait de l’ombre par override ou final.

import QtQuick

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

Un membre redéfinit un membre non virtuel

Que s’est-il passé ?

Vous avez redéfini une propriété qui n'était pas marquée comme virtual ou override.

Pourquoi est-ce un problème ?

Les propriétés pouvant être redéfinies doivent être déclarées via « virtual » ou « override ». Le moteur QML génère une erreur d'exécution lorsqu'il rencontre une propriété redéfinie ne comportant pas le marqueur « virtual » ou « override ».

Exemple

import QtQuick

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

Pour corriger cet avertissement, renommez la propriété redéfinie ou marquez-la comme « virtual » ou « override ».

import QtQuick

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

La propriété existe déjà dans le type de base

Que s’est-il passé ?

Vous avez masqué une propriété sans utiliser « as » virtual, override ou final.

Pourquoi est-ce un problème ?

Les propriétés pouvant être redéfinies doivent être déclarées via virtual ou override. Le moteur QML affiche un avertissement lors de l’exécution lorsqu’il rencontre la propriété masquée.

Exemple

import QtQuick

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

Pour corriger cet avertissement, renommez la propriété masquante ou masquée, ou ajoutez les marqueurs manquants virtual, override ou 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.