C++ 无法处理未注册的数据类型-Qt

C++ 无法处理未注册的数据类型-Qt,c++,qt,qml,C++,Qt,Qml,各位! 我正在用Qt开发一个代码,我的许多组件在更改颜色方面都有类似的行为。因此,我创建了一个名为ComponentState的类,该类继承自QObject class ComponentState : public QObject { Q_OBJECT Q_PROPERTY(QColor ui_state_color READ getStateColor WRITE setStateColor NOTIFY onStateColorChanged) } 我从这个类继承的一个组

各位!

我正在用Qt开发一个代码,我的许多组件在更改颜色方面都有类似的行为。因此,我创建了一个名为ComponentState的类,该类继承自QObject

class ComponentState : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QColor ui_state_color READ getStateColor WRITE setStateColor NOTIFY onStateColorChanged)
}
我从这个类继承的一个组件称为气动线

class PneumaticLine : public ComponentState
{
    Q_OBJECT
    ...
}
我的应用程序中的一个视图(用QML制作)有很多这样的气动元素,所以我决定创建一个名为Controller的类,以拥有一个QList,并使用QQmlListProperty导出它

class Controller : public QObject
{
    Q_OBJECT
    Q_PROPERTY(QQmlListProperty<PneumaticLine> anti_ice_pneumatic_lines READ getAntiIcePneumaticLines)
...
    QQmlListProperty<PneumaticLine> getAntiIcePneumaticLines() {
        return QQmlListProperty<PneumaticLine> (this, &antiIcePneumaticLines);
    }
private:
    QList<PneumaticLine*> antiIcePneumaticLines;
}
类控制器:公共QObject
{
Q_对象
Q_属性(QQmlListProperty防冰气动管路读取getAntiIcePneumaticLines)
...
QQmlListProperty getAntiIcePneumaticLines(){
返回qqmlistproperty(此和防冰气动管路);
}
私人:
QList抗冰气动管路;
}
尽管我在主文件中声明了qml类型,但仍然会出现以下错误:

QMetaProperty::read:无法处理未注册的数据类型“qqmlistProperty”setContextProperty(“控制器”、&Controller);
谢谢大家!

我还有一个担忧:请关心
控制器的生命周期文档。QQmlContext不拥有价值的备注。不幸的是,它没有说明
值的预期使用寿命。在最好的情况下,复制内容,并使用临时实例。在最坏的情况下,希望实例与注册它的上下文一样长。我会调查这个问题以防止U.B.@Scheff谢谢,我会处理可能的问题。你知道如何解决上面提到的错误吗?我在转发声明的类时遇到过类似的问题。它是在我把课程包括进去之后编译的。也许这对某人有帮助。
qmlRegisterType<ComponentState>("ECS", 1, 0, "ComponentState");
qmlRegisterType<PneumaticLine>("ECS", 1, 0, "PneumaticLine");
qmlRegisterType<Controller>("ECS", 1, 0, "Controller");
Controller controller;
engine.rootContext()->setContextProperty("Controller", &controller);