有没有一种方法可以检测QML属性是否绑定(未设置为静态值)?

时间:2019-08-28 16:32:17

标签: qt qml

是否可以区分设置为静态值的属性与绑定到其他属性的属性之间的区别?我检查了文档,但对此一无所获。

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

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

1 个答案:

答案 0 :(得分:1)

我认为您追求的是私有的静态方法:QQmlPropertyPrivate::binding()。例如,这里有一些QtQuick Designer代码using it

从技术上讲,我不认为这会有所帮助。有趣的是,Qt::QML Type具有一个Qt.binding()函数,该函数用于分配绑定(并且显然在幕后调用了上述私有方法)。还有QML Binding类型。但是在两种情况下,我都找不到一种方法来获取已经分配给属性的现有绑定(QAbstractBinding)的实例。

响应一些评论:通过Qt元对象系统,您可以找到连接到属性通知程序信号的对象。但是要做到这一点,您需要知道(或没有)绑定有问题的QML属性的QObjectQMetaProperty ...这使我们回到我相信的平方1(查找列出该属性所绑定的内容(如果有的话)。