Auf dieser Seite

Richtige Funktion verwenden

Diese Warnkategorie wird von qmllint als „ [use-proper-function] “ bezeichnet.

Die Eigenschaft ist eine Varianten-Eigenschaft: Sie kann eine Methode sein oder auch nicht

Was ist passiert?

Sie haben eine Eigenschaft vom Typ „ var “ so verwendet, als wäre sie eine aufrufbare Funktion.

Warum ist das schlecht?

Dies beeinträchtigt die Lesbarkeit des Codes, die QML-Engine gibt einen Fehler aus, wenn die Eigenschaft keine aufrufbare Funktion enthält, und die QML-Tools können 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 Funktion, damit sie aufgerufen werden kann:

import QtQuick

Item {
    function fun() {
        console.log("Hello")
    }

    Component.onCompleted: { fun(); }
}

„Property“ 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 war höchstwahrscheinlich nicht zum Aufruf gedacht 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 kannst du die Eigenschaftsdefinition durch eine reguläre ` Q_INVOKABLE `-Methode oder einen Slot ersetzen, sofern du der Autor der Eigenschaft bist. Dies ist nur möglich, wenn die Funktion in QML niemals geändert werden soll. Wenn du tatsächlich einen Callback speichern musst, hast du 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, ein Signal aufzurufen, und nicht die überschreibende Eigenschaft. Dies könnte 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 überschreibende 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 überschattet

Siehe {Signal wird von einer Eigenschaft überschattet}.

Slot wird von einer Eigenschaft überschattet

Siehe {Signal wird von einer Eigenschaft überschattet}.

Die Eigenschaft ist keine Methode

Was ist passiert?

Sie haben eine Eigenschaft eines anderen Typs als „ var “ oder „ QJSValue “ so verwendet, als wäre sie eine aufrufbare Funktion.

Warum ist das ein Problem?

Die Eigenschaft kann nicht aufgerufen werden und führt zur Laufzeit zu einem Fehler in der QML-Engine.

Beispiel

import QtQuick

Item {
    property int hello
    Component.onCompleted: { console.log(hello()); }
}

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()); }
}

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