Richtige Funktion verwenden
Diese Warnkategorie wird von qmllint [use-proper-function]
geschrieben.
Eigenschaft ist eine abweichende Eigenschaft: Sie kann eine Methode sein oder auch nicht.
Was ist passiert?
Sie haben eine Eigenschaft vom Typ var verwendet, als wäre sie eine aufrufbare Funktion.
Warum ist das schlecht?
Dies beeinträchtigt die Lesbarkeit des Codes, die QML-Engine gibt eine Fehlermeldung aus, wenn die Eigenschaft keine aufrufbare Funktion enthält, und das QML-Tooling kann keine spezifischen Methodenoptimierungen anwenden.
Beispiel
import QtQuick Item { property var fun: () => console.log("Hello") Component.onCompleted: { fun(); } }
Um diese Warnung zu beheben, deklarieren Sie fun
als eine Funktion, um sie aufrufen zu können:
import QtQuick Item { function fun() { console.log("Hello") } Component.onCompleted: { fun(); } }
Eigenschaft ist eine QJSValue-Eigenschaft: Sie kann eine Methode sein oder auch nicht.
Was ist passiert?
Sie haben eine Eigenschaft vom Typ QJSValue
so verwendet, als wäre sie eine aufrufbare Funktion.
Hinweis: Eigenschaften vom Typ QJSValue können nur in C++ definiert werden.
Warum ist das schlecht?
Die Eigenschaft sollte höchstwahrscheinlich nicht aufgerufen werden und führt dazu, dass die QML-Engine zur Laufzeit einen Fehler ausgibt.
Beispiel
import QtQuick Rectangle { // Rectangle has a property gradient of the type QJSValue Component.onCompleted: { console.log(gradient()); } }
Um diese Warnung zu beheben, entfernen Sie den Aufruf von gradient
:
import QtQuick Item { // Rectangle has a property gradient of the type QJSValue Component.onCompleted: { console.log(gradient); } }
Alternativ können Sie die Eigenschaftsdefinition durch eine reguläre Q_INVOKABLE Methode oder einen Slot ersetzen, wenn Sie der Autor der Eigenschaft sind. Dies ist nur möglich, wenn die Funktion nie in QML geändert werden soll. Wenn Sie tatsächlich einen Rückruf speichern müssen, haben Sie Pech gehabt.
Signal wird von einer Eigenschaft überschattet
Was ist passiert?
Sie haben ein Signal aufgerufen, das von einer Eigenschaft überschattet wird, oder Sie haben ein Signal mit einer Eigenschaft überschattet.
Warum ist das schlecht?
Der Aufrufer hat höchstwahrscheinlich erwartet, dass er ein Signal aufruft, und nicht die schattenbildende Eigenschaft. Dies kann dazu führen, dass die QML-Engine zur Laufzeit einen Fehler ausgibt.
Beispiel
import QtQuick Item { component Base: Item { signal helloSignal } Base { property int helloSignal // shadows helloSignal inherited from Base Component.onCompleted: { helloSignal(); } } }
Um diese Warnung zu beheben, benennen Sie die schattengebende Eigenschaft um:
import QtQuick Item { component Base: Item { signal helloSignal } Base { property int helloSignal2 // does not shadow anymore Component.onCompleted: { helloSignal(); } } }
Methode wird von einer Eigenschaft beschattet
Siehe {Signal is shadowed by a property}.
Slot wird von einer Eigenschaft beschattet
Siehe {Signal is shadowed by a property}.
Eigenschaft ist keine Methode
Was ist passiert?
Sie haben eine Eigenschaft eines anderen Typs als var oder QJSValue
verwendet, als wäre sie eine aufrufbare Funktion.
Warum ist das schlecht?
Die Eigenschaft kann nicht aufgerufen werden und führt zu einer Fehlermeldung der QML-Engine zur Laufzeit.
Beispiel
Um diese Warnung zu beheben, entfernen Sie den Aufruf oder machen Sie hello
zu einer Funktion:
import QtQuick Item { property int hello Component.onCompleted: { console.log(hello); } // alternative: function helloAlternative() { ... } Component.onCompleted: { console.log(helloAlternative()); } }
© 2025 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.