Eingeschränkter Typ

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

Sie können von hier aus nicht auf ein unscoped enum zugreifen

Was ist passiert?

Sie haben auf den Wert einer in C++ definierten Aufzählung über ihren Aufzählungstypnamen zugegriffen.

Warum ist das schlecht?

Auf in C++ definierte unscoped enums kann nicht über ihren enum type name zugegriffen werden. Sie werden zur Laufzeit undefiniert sein.

Beispiel

import QtQuick
import SomeModule // contains MyClass

Item {
    property int i: MyClass.Hello.World
}

wobei MyClass definiert ist als

class MyClass: public QObject
{
    Q_OBJECT
    QML_ELEMENT

public:
    enum Hello { World };
    Q_ENUM(Hello);
    ...

};

Um diese Warnung zu beheben, entfernen Sie den unnötigen Enum-Typ-Namen aus seiner QML-Verwendung:

import QtQuick

Item {
    property int i: MyClass.World
}

Wenn Sie der Autor der Enum sind, können Sie auch die Enum-Definition ändern, um eine Enum-Klasse zu verwenden, anstatt den QML-Code zu ändern:

class MyClass: public QObject
{
    Q_OBJECT
    QML_ELEMENT

public:
    enum class Hello { World };
    Q_ENUM(Hello);
    ...
};

Hinweis: Weitere Informationen über die Registrierung von Enum-Typen finden Sie hier.

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