Auf dieser Seite

Typumwandlung bei losem Gleichheitsvergleich

Diese Warnkategorie wird von qmllint als „ [equality-type-coercion] “ bezeichnet.

Typumwandlung bei lockeren Gleichheitsvergleichen

Was ist passiert?

Zwei Werte wurden mithilfe der Operatoren für lockere Gleichheitsvergleiche auf Gleichheit verglichen.

Warum ist das problematisch?

Die Operatoren für lockere Gleichheitsvergleiche können Werte vor der Überprüfung auf Gleichheit in einen anderen Typ umwandeln. Dies kann zu unerwarteten Ergebnissen führen.

Beispiel

Hier ist ein Beispiel mit einer Liste von Rechtecken und einem „ TextInput “. Wenn der Benutzer eine Zahl eingibt, wird das Rechteck an diesem Index hervorgehoben. Der Code weist einen Fehler auf. Ist die Eingabe leer, wird das erste Rechteck rot hervorgehoben, da „“ == 0 ist.

import QtQuick

Item {
    TextInput {
        id: input
    }
    Repeater {
        model: 3
        Rectangle {
            // first rectangle is red on empty input
            color: input.text == index ? "red" : "blue"
        }
    }
}

Verwenden Sie generell die strengen Vergleichsoperatoren ` === ` und ` !==`. Selbst wenn Sie sich der Typumwandlung bewusst sind, wird dennoch empfohlen, stattdessen explizite Typumwandlungen und strenge Vergleiche zu verwenden.

import QtQuick

Item {
    TextInput {
        id: input
    }
    Repeater {
        model: 3
        Rectangle {
            // check inputs, use explicit casts, and strict equality operators
            color: input.text.length !== 0
                   && Number(input.text) === index ? "red" : "blue"
        }
    }
}

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