Qt 区分动态指定的特性和静态指定的特性
此代码示例来自Qt文档 资料来源: 例如,下面的矩形最初确保其高度为 总是两倍于它的宽度。但是,当按下空格键时 宽度*3的当前值将作为静态值指定给高度。 之后,高度将保持在此值不变,即使 宽度改变。静态值的赋值将删除绑定 我不明白这个例子。为什么第一个赋值创建绑定,而第二个赋值指定静态值?如注释中所示。两者之间的区别是什么Qt 区分动态指定的特性和静态指定的特性,qt,qml,Qt,Qml,此代码示例来自Qt文档 资料来源: 例如,下面的矩形最初确保其高度为 总是两倍于它的宽度。但是,当按下空格键时 宽度*3的当前值将作为静态值指定给高度。 之后,高度将保持在此值不变,即使 宽度改变。静态值的赋值将删除绑定 我不明白这个例子。为什么第一个赋值创建绑定,而第二个赋值指定静态值?如注释中所示。两者之间的区别是什么 高度:宽度*2和高度=宽度*3 进行计算是Qml/QtQuick语法的一部分 为什么第一个赋值创建绑定,而第二个赋值指定静态值 主要区别在于前者作为Qml的一部分进行评估(使
高度:宽度*2
和高度=宽度*3
进行计算是Qml/QtQuick语法的一部分
为什么第一个赋值创建绑定,而第二个赋值指定静态值
主要区别在于前者作为Qml的一部分进行评估(使用属性绑定)✨) 后者作为JS的一部分进行评估(作为一个即时的静态赋值)
如果在等号上使用冒号,第二个赋值是否也有效
如果您想通过JS设置属性绑定,请参阅(与您链接的文章相同)
一般语法规则是什么,使得第一条语句作为QML的一部分进行求值,第二条语句作为js进行求值,而不添加任何魔法
这些文章比我解释得更好
这是Qml范围的一般概述:
这解释了如何在附加属性中使用JS作用域
在代码中,矩形
是一个项(也是一个Qml对象)。另一方面,宽度
、高度
、焦点
和键。onSpacePressed
都是附加属性。它们具有JS作用域功能。键上的括号。onSpacePressed
仅是JS作用域到多行的扩展
虽然不经常这样做,但实际上你可以这样做
Rectangle {
width: {
var temp = 5;
width = 20 * 5;
}
height: width * 2
}
或
两者都使用JS将宽度设置为100
这在很大程度上是通过经验获得的。一旦你经常使用Qml,阅读大量示例,你就会掌握它的诀窍。这是语法的一部分。我不理解该示例中的语法。请展开。如果在等号上使用冒号,第二个赋值也会起作用吗?不,冒号用于赋值值直接指向属性。为什么第一条语句作为QML的一部分进行计算?一般语法规则是什么,使得第一条语句作为QML的一部分进行计算,第二条语句作为js进行计算,而不添加任何魔法?您好,我已经更新了我的答案,并添加了几个链接供进一步阅读。希望对您有所帮助。
Rectangle {
width: 100
height: width * 2
focus: true
Keys.onSpacePressed: {
height = width * 3
}
}
Rectangle {
width: {
var temp = 5;
width = 20 * 5;
}
height: width * 2
}
Rectangle {
width: {
var temp = 5;
return 20 * 5;
}
height: width * 2
}