Restricted type

This warning category is spelled [restricted-type] by qmllint.

You can't access an unscoped enum from here

What happened?

You accessed the value of an enum defined in C++ by its enum type name.

Why is this bad?

Unscoped enums defined in C++ can't be accessed by their enum type name. They will be undefined at runtime.

范例

import QtQuick
import SomeModule // contains MyClass
Item {
    property int i: MyClass.Hello.World
}
					

where MyClass is defined as

class MyClass: public QObject
{
    Q_OBJECT
    QML_ELEMENT
public:
    enum Hello { World };
    Q_ENUM(Hello);
    ...
};
					

To fix this warning, remove the unnecessary enum type name from its QML usage:

import QtQuick
Item {
    property int i: MyClass.World
}
					

If you are the author of the enum, you can also modify the enum definition to use an enum class instead of changing the QML code:

class MyClass: public QObject
{
    Q_OBJECT
    QML_ELEMENT
public:
    enum class Hello { World };
    Q_ENUM(Hello);
    ...
};
					

注意: You can find more information about enum type registration here .