QML支持内置和自定义值类型. 值类型采用值传递, 而不是引用传递. 例如int或string. 这种方式与QML对象类型不同, 对象类型采用引用传递. 如果将对象类型的实例赋值给不同的属性, 则两个属性具有相同的值. 修改对象, 两个属性值也会改变. 与对象类型不同, 值类型不能声明QML对象: 例如, 不可能声明int{}对象或size{}对象. 值类型指: 单个值(如, int表示单个数字) 包含属性和方法的值(如, size是包含width和height属性的值) 泛型类型var. 它可以容纳任何其他类型的值, 但它本身就是一个值类型. 当一个变量或属性包含一个值类型, 并将其分配给另一个变量或者属性时, 就会生成该值的副本. 有效的值类型 默认情况下, 不需要导入语句, 引擎会支持某些值类型. 而其他值类型需要客户端导入提供它们的模块. 除了下面的两种类型, 文档列出的其他值类型都可以作为属性类型: list 容器中的元素是对象或值类型 enumeration 无法直接使用, 必须由QML对象类型定义 QML内置的值类型 QML支持的内置值类型如下所示: QML模块支持的值类型 QML模块在QML语言之外扩展值类型. 如下所示, QtQuick模块提供的值类型: Qt全局对象提供操作值类型的函数. 你也可以自定义值类型, 参见Defining QML Types from C++. 想要使用QML模块提供的特定类型, 必须在QML文档导入这个模块. 值类型的属性改变行为 某些值类型具有属性: 如, font类型有pixelSize, family和bold属性. 与对象类型的属性不同, 值类型的属性不提供属性更改信号. 只能为值类型本身创建属性改变信号的处理程序: 注意: 如下所示, 无论值类型的属性还是本身改变, QML引擎都会发出值类型的属性改变信号: 相反, 对象类型的属性会发出属性改变信号, 并且只有当将属性重新分配给不同的对象值时, 才会调用对象类型属性的属性改变处理程序.