Utilisation d'une fonction appropriée
Cette catégorie d'avertissement est orthographiée [use-proper-function] par qmllint.
La propriété est une variante de la propriété : Elle peut être ou ne pas être une méthode
Qu'est-ce qui s'est passé ?
Vous avez utilisé une propriété de type var comme s'il s'agissait d'une fonction appelable.
Pourquoi est-ce mauvais ?
Cela affecte la lisibilité du code, le moteur QML se trompe si la propriété ne contient pas de fonction appelable, et l'outil QML ne peut pas appliquer d'optimisations spécifiques aux méthodes.
Exemple
import QtQuick Item { property var fun: () => console.log("Hello") Component.onCompleted: { fun(); } }
Pour corriger cet avertissement, déclarez fun comme une fonction pour pouvoir l'appeler :
import QtQuick Item { function fun() { console.log("Hello") } Component.onCompleted: { fun(); } }
Property est une propriété QJSValue : Il peut s'agir ou non d'une méthode
Qu'est-ce qui s'est passé ?
Vous avez utilisé une propriété de type QJSValue comme s'il s'agissait d'une fonction pouvant être appelée.
Remarque : les propriétés de type QJSValue ne peuvent être définies qu'en C++.
Pourquoi est-ce mauvais ?
La propriété n'était très probablement pas destinée à être appelée et provoquera une erreur du moteur QML à l'exécution.
Exemple
import QtQuick Rectangle { // Rectangle has a property gradient of the type QJSValue Component.onCompleted: { console.log(gradient()); } }
Pour corriger cet avertissement, supprimez l'appel à gradient:
import QtQuick Item { // Rectangle has a property gradient of the type QJSValue Component.onCompleted: { console.log(gradient); } }
Sinon, envisagez de remplacer la définition de la propriété par une méthode Q_INVOKABLE normale ou un slot si vous êtes l'auteur de la propriété. Cela n'est possible que si la fonction n'est jamais censée être modifiée dans QML. Si vous avez besoin de stocker un rappel, vous n'avez pas de chance.
Un signal est caché par une propriété
Qu'est-ce qui s'est passé ?
Vous avez appelé un signal qui est caché par une propriété ou vous avez caché un signal avec une propriété.
Pourquoi est-ce mauvais ?
L'appelant s'attendait très probablement à appeler un signal, et non la propriété ombrée. Cela peut entraîner une erreur du moteur QML à l'exécution.
Exemple
import QtQuick Item { component Base: Item { signal helloSignal } Base { property int helloSignal // shadows helloSignal inherited from Base Component.onCompleted: { helloSignal(); } } }
Pour corriger cet avertissement, renommez la propriété d'ombre :
import QtQuick Item { component Base: Item { signal helloSignal } Base { property int helloSignal2 // does not shadow anymore Component.onCompleted: { helloSignal(); } } }
Method is shadowed by a property
Voir {Signal est ombragé par une propriété}.
Slot is shadowed by a property
Voir {Signal est ombragé par une propriété}.
La propriété n'est pas une méthode
Qu'est-ce qui s'est passé ?
Vous avez utilisé une propriété d'un type autre que var ou QJSValue comme s'il s'agissait d'une fonction appelable.
Pourquoi est-ce mauvais ?
La propriété ne peut pas être appelée et provoquera une erreur du moteur QML Runtime.
Exemple
Pour corriger cet avertissement, supprimez l'appel ou faites de hello une fonction :
import QtQuick
Item {
property int hello
Component.onCompleted: { console.log(hello); }
// alternative:
function helloAlternative() { ... }
Component.onCompleted: { console.log(helloAlternative()); }
}© 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.