c – QML中的附加属性

我可以像Component一样为所有属性创建自己的附件吗?

Item{
    Component.onCompleted : {} // Component is attached to everyone Items
}

最佳答案 您可能无法将属性附加到未创建的项目或组件.但是你为什么要这么做呢?

相反,您可以考虑使用信号和全局属性.

对于可以从任何位置访问的全局属性,可以设置声明性视图的根上下文的上下文属性.

即,

QmlApplicationViewer viewer;
MyPropertyClass myProp;
viewer->rootContext()->setContextProperty("MyPropClass", &myProp);

现在,在您的QML文件中,您可以访问此类的属性

Rectangle {
    Text {
        text: MyPropClass.getMyPropText()
    }
    MouseArea {
        onClicked: { MyPropClass.text = "Clicked" }
    }
}

这将从MyPropertyClass调用Q_INVOKABLE方法getMyPropText().和Q_PROPERTY’文本’可以在发出一些信号时设置.

这适合你需要吗?

点赞