Doppelte Bindungen

Diese Warnkategorie wird von qmllint [duplicate-property-binding] geschrieben.

Duplizierter Interceptor auf Eigenschaft

Was ist passiert?

Eine Eigenschaft hat mehrere Interceptoren.

Warum ist das schlecht?

Das Setzen von mehreren Abfangmechanismen für dieselbe Eigenschaft wird von der QML-Engine nicht unterstützt.

Beispiel

Verwenden Sie Behavior zweimal als Abfangjäger für dieselbe Eigenschaft:

import QtQuick

Rectangle {
    Behavior on width {
        NumberAnimation { duration: 1000 }
    }
    Behavior on width { // not ok: Duplicate interceptor on property "width" [duplicate-property-binding]
        NumberAnimation { duration: 2000 }
    }
}

Um diese Warnung zu beheben, entfernen Sie alle bis auf einen Behavior:

import QtQuick

Rectangle {
    Behavior on width {
        NumberAnimation { duration: 2000 }
    }
}

Siehe auch Property Modifier Types.

Doppelte Wertquelle für eine Eigenschaft

Was ist passiert?

Eine Eigenschaft hat mehrere Wertquellen.

Warum ist das schlecht?

Die Wertquellen zeigen ein unerwartetes Verhalten, wenn sie kombiniert werden. Siehe Beispiel unten.

Beispiel

Verwenden wir NumberAnimation zweimal als Wertquelle für dieselbe Eigenschaft:

import QtQuick

Rectangle {
    NumberAnimation on x { to: 50; duration: 1000 }
    NumberAnimation on x { to: 10; duration: 100 } // not ok: Duplicate value source on property "x" [duplicate-property-binding]

    onXChanged: console.log(x)
}

Wenn Sie die Ausgabe dieses Programms überprüfen, werden Sie sehen, dass die beiden NumberAnimation ineinander verschachtelt werden, was wahrscheinlich nicht der beabsichtigte Effekt ist. Um diese Warnung zu beheben, entfernen Sie alle bis auf eine NumberAnimation:

import QtQuick

Rectangle {
    NumberAnimation on x { to: 50; duration: 1000 }
}

Cannot combine value source and binding

Was ist passiert?

Eine Eigenschaft hat eine Wertquelle und eine Bindung für dieselbe Eigenschaft.

Warum ist das schlecht?

Die Bindung aktualisiert den Eigenschaftswert, bevor die Wertquelle mit der Aktualisierung der Eigenschaft beginnt. Dies kann zu unerwartetem Verhalten führen und ist außerdem schwieriger zu lesen.

Beispiel

Verwenden wir NumberAnimation als Wertquelle für dieselbe Eigenschaft:

import QtQuick

Rectangle {
    NumberAnimation on x { to: 50; duration: 1000 } // not ok: Cannot combine value source and binding on property "x" [duplicate-property-binding]
    x: 55

    onXChanged: console.log(x)
}

Wenn Sie die Ausgabe dieses Programms überprüfen, werden Sie sehen, dass NumberAnimation von 55 auf 50 animiert wird, was mit dem folgenden Code einfacher zu lesen wäre:

import QtQuick

Rectangle {
    NumberAnimation on x { from: 55; to: 50; duration: 1000 } // ok: intentions are clearer now!
}

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