Unaufgelöster Typ

Diese Kategorie enthält folgende Warnungen:

  • Typ wird verwendet, ist aber nicht aufgelöst
  • Typ wurde für den Rückgabetyp der Methode nicht gefunden
  • Typ wurde für den Typ des Parameters in der Methode nicht gefunden
  • Eigenschaft hat unvollständigen Typ; Möglicherweise fehlt ein Import
  • Typ der Eigenschaft nicht gefunden; Dies ist wahrscheinlich auf einen fehlenden Abhängigkeitseintrag oder einen Typ zurückzuführen, der nicht deklarativ offengelegt wird
  • Typ der Eigenschaft nicht vollständig aufgelöst; Dies ist wahrscheinlich auf einen fehlenden Abhängigkeitseintrag oder einen nicht deklarativ dargestellten Typ zurückzuführen
  • Typ nicht im Namespace gefunden

Diese Warnungen weisen normalerweise auf fehlende Importe oder fehlerhafte QML-Module hin, je nachdem, ob Sie ein QML-Modul verwenden oder schreiben.

Diese Warnkategorie wird von qmllint mit [unresolved-type] geschrieben.

Für Benutzer von QML-Modulen

Was ist passiert?

Sie haben einen Typ verwendet, der vom QML-Tooling nicht gefunden wurde. Dies deutet in der Regel auf einen möglichen Tippfehler, einen fehlenden Import oder unsachgemäß eingerichtete Importpfade hin.

Warum ist das schlecht?

Der Typ wird vom QML-Tooling nicht gefunden, und höchstwahrscheinlich auch nicht von der QML-Engine.

Beispiele

Tippfehler

import QtQuick

Itme { ... }

Um diese Warnung zu beheben, korrigieren Sie den Tippfehler:

import QtQuick

Item { ... }

Fehlende Import-Anweisung

Item { ... }

Um diese Warnung zu beheben, importieren Sie das Modul, das Item zur Verfügung stellt:

import QtQuick

Item { ... }

Wenn das Hinzufügen der Importanweisung nicht hilft, sehen Sie sich Ihre Importpfade an.

Wenn Sie diese Warnung über QML Language Server erhalten, ist Ihre Einrichtung möglicherweise unvollständig.

Für QML-Modul-Autoren

Was ist passiert?

Das QML-Tooling kann einen Typ in Ihrem QML-Modul nicht finden. Es kann sich um einen Typ handeln, den Sie QML direkt oder indirekt durch Verwendung als:

  • Basistyp
  • Eigenschaftstyp
  • Signal-, Slot- oder Q_INVOKABLE Parameter-Typ
  • Q_INVOKABLE Rückgabetyp

Möglicherweise fehlt Ihnen eine deklarative Typregistrierung, wenn der nicht aufgelöste Typ von Ihrem Modul offengelegt wird.

Andernfalls könnte Ihr QML-Modul nicht deklarierte Abhängigkeiten zu dem QML-Modul haben, das den nicht aufgelösten Typ exponiert.

Warum ist das schlecht?

Die QML-Werkzeuge funktionieren nicht mit Ihren Typen, und die Benutzer Ihres QML-Moduls erhalten unberechtigte Warnungen, die sie nicht beheben können.

Beispiele

Fehlende Typregistrierung

Lesen Sie in Defining QML Types from C++ nach, wie Sie Ihre Typen deklarativ registrieren. Stellen Sie sicher, dass alle Typen und Enums, die direkt oder indirekt in QML verwendet werden, registriert sind.

Fehlende QML-Modul-Abhängigkeit

Lassen Sie MyItem ein C++-Typ in Ihrem QML-Modul sein:

class MyItem: public QQuickItem {
    ...
    QML_ELEMENT
    ...
    Q_PROPERTY(SomeType someProperty READ someProperty WRITE setSomeProperty NOTIFY somePropertyChanged)
    ...
}

Die QML-Werkzeuge können MyItem nicht korrekt auflösen, wenn sie nicht zuerst QQuickItem oder SomeType auflösen können. Wenn QQuickItem im QML-Modul QtQuick und SomeType in SomeModule enthalten ist, müssen Sie diese C++-Abhängigkeiten in der QML-Moduldefinition angeben.

Dazu fügen Sie die Abhängigkeiten zur QML-Moduldefinition hinzu. Dies kann zum Beispiel mit DEPENDENCIES geschehen:

qt_add_qml_module(
    ...
    DEPENDENCIES
        QtQuick # for QQuickItem to be resolved
        SomeModule # for SomeType to be resolved
)

Weitere Informationen finden Sie unter Deklaration von C++-Abhängigkeiten zwischen QML-Modulen.

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