Sur cette page

Propriété manquante

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

Impossible d'assigner à une propriété par défaut inexistante

Qu'est-ce qui s'est passé ?

Vous avez assigné un objet à une propriété par défaut inexistante.

Pourquoi est-ce mauvais ?

Le moteur QML ne peut pas assigner cet objet au moment de l'exécution.

Exemple

import QtQuick

Item {
    component MyType: QtObject { property Item myItem; }

    MyType {
        Item {}
    }
}

Pour corriger cet avertissement, spécifiez la propriété à laquelle vous voulez vous lier ou, si vous êtes l'auteur du type, marquez une propriété comme étant par défaut :

import QtQuick

Item {
    component MyType: QtObject { property Item myItem; }

    MyType {
        myItem: Item {}
    }

    component AlternativeMyType: QtObject { default property Item myItem; }

    AlternativeMyType {
        Item {} // bound to myItem via default property
    }
}

Property does not exist

Qu'est-ce qui s'est passé ?

Vous avez assigné une expression à une propriété inexistante.

Pourquoi est-ce mauvais ?

Le moteur QML ne peut pas assigner cette expression au moment de l'exécution.

Exemple

import QtQuick

Item {
    property int myInt
    myItn: 42
}

Pour corriger cet avertissement, supprimez la liaison ou corrigez une éventuelle faute de frappe :

import QtQuick

Item {
    property int myInt
    myInt: 42
}

Member not found on type

Qu'est-ce qui s'est passé ?

Vous avez accédé à un membre dans une expression de membre de champ qui ne peut pas être trouvée par l'outil QML. Une expression de membre de champ est une expression de la forme someId.someProperty.

Le membre peut ne pas exister du tout, par exemple si vous avez fait une faute de frappe. Il peut également exister au moment de l'exécution (parce qu'il existe sur un sous-type spécifique qui est toujours présent), mais pas sur le type déclaré statiquement.

Pourquoi est-ce mauvais ?

L'outil QML ne peut pas trouver ce membre, ce qui signifie que des fonctionnalités telles que la définition directe et l'autocomplétion ne fonctionneront pas. Au moment de l'exécution, il peut y avoir une erreur ou vous pouvez obtenir un résultat incorrect si le membre n'existe vraiment pas. Il n'y aura pas d'erreur si le membre existe toujours au moment de l'exécution, mais dans ce cas, il peut y avoir un coût de performance dû aux optimisations manquées.

Exemple

La propriété n'existe pas réellement

import QtQuick

Item {
    id: self
    property int myInt
    property int myInt2: 1 + self.myItn
}

Pour corriger cet avertissement, supprimez la liaison ou corrigez une éventuelle faute de frappe :

import QtQuick

Item {
    id: self
    property int myInt
    property int myInt2: 1 + self.myInt
}

La propriété existe, mais le type n'est pas assez précis

import QtQuick
import QtQuick.Controls.Basic

Item {
  component Message : Item {
    required property string sender
    required property string text
  }
  ListView {
    id: messageView
    delegate: Message {}
  }

  Button {
    text: "Reply to %1".arg(messageView.currentItem.sender) // not ok
  }
}

Pour corriger cet avertissement, faites passer l'objet à partir duquel vous lisez vers le type le plus spécifique :

import QtQuick
import QtQuick.Controls.Basic

Item {
  component Message : Item {
    required property string sender
    required property string text
  }
  ListView {
    id: messageView
    delegate: Message {}
  }

  Button {
    text: "Reply to %1".arg((messageView.currentItem as Message).sender) // now ok
  }
}

Dans l'exemple, le type déclaré de la propriété currentItem de messageView est Item, qui n'a pas de propriété sender: sender n'est défini que dans Message. Ici, nous savons cependant que currentItem contient toujours un Message, nous pouvons donc convertir currentItem en Message à l'aide d'une assertion de type.

© 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.