Qt 是否有方法检测QML属性是否已绑定(未设置为静态值)?

Qt 是否有方法检测QML属性是否已绑定(未设置为静态值)?,qt,qml,Qt,Qml,是否可以区分设置为静态值的属性与绑定到其他对象的属性之间的区别?我查看了文档,但没有看到任何关于此的内容 Rectangle { id: firstRect color: "black" // set to static value } Rectangle { color: firstRect.color // bound to external value } 在本例中,我可以检测到firstRect颜色是一个静态值,而第二个矩形颜色是绑定的吗?我想您要的是一个私

是否可以区分设置为静态值的属性与绑定到其他对象的属性之间的区别?我查看了文档,但没有看到任何关于此的内容

Rectangle {
    id: firstRect
    color: "black"  // set to static value
}
Rectangle {
    color: firstRect.color  // bound to external value
}

在本例中,我可以检测到firstRect颜色是一个静态值,而第二个矩形颜色是绑定的吗?

我想您要的是一个私有静态方法:。例如,下面是一些QtQuick Designer代码

从技术上讲,我不确定这是否有帮助。有趣的是,
Qt::QML类型
有一个用于分配绑定的函数(显然在幕后调用上述私有方法)。还有QML类型。但在这两种情况下,我都看不到获得已分配给属性的现有绑定(
QAbstractBinding
)实例的方法


回应一些评论:通过Qt元对象系统,您可以找到连接到属性通知器信号的内容。但要做到这一点,您需要知道QML属性绑定到(或不绑定到)的
QObject
QMetaProperty
。。。这让我们回到了第1步,我相信(找出属性绑定到什么,如果有的话)。

了解您的用例会很有趣。调试?还有别的吗?如果这是不可能的(我有点怀疑这是不可能的),也许还有另一种方法来实现您所需要的。我将在中公开控件的属性,以便用户可以在沙盒环境中的运行时修改它们。如果能够告诉用户某个属性的默认值是绑定还是静态值,以及在被覆盖时能够恢复原始绑定或值,那就太好了。据我所知,可以找到连接到信号的插槽。我没有做过任何实验,但也许可以搜索所有属性改变的信号,并找出它们是否会触发其他属性的改变。