代码先锋网 代码片段及技术文章聚合

QML基础五:QML对象类型介绍

技术标签: QML  qml

引言

用了N年的QWidget,因为项目需求而开始学习QML做一些动态的界面,下面开始记录学习QML的新路历程。
注:学习有误的望指点一二,不喜勿喷!!!

QML对象类型

用语法术语来说,QML对象类型是一种可以用来声明对象的方法,方法是指定类型每次,后跟一组包含该对象属性的花括号。这与基本类型不同,基本类型不能以该方式使用。
例如:Rectangle是QML对象类型,可用于创建Rectangle类型的对象。像int和bool这种基本类型只能保持简单的数据类型,而不是对象。

定义QML对象类型

通过QML文档定义对象类型

开发人员通过创建QML文件来定义一个新的对象类型,该类型由文件名标识(不带文件扩展名)。
例如:一个文件名为Button.qml的文件,它对应的类型为Button,该定义可以在QML应用程序中使用。

注意:在通过创建QML文件来实现自定义对象类型时,文件名称首字符必须大写(本人在测试时不知道该知识导致花了几个小时去解决,心累!)

通过组件定义匿名类型

在QML中创建对象类型的另一种方法是使用Component类型。其允许在QML文档中内联定义类型,而不是使用单独的.qml文件来定义类型。

Item {
    id: root
    width: 500; height: 500

    Component {
        id: myComponent
        Rectangle { width: 100; height: 100; color: "red" }
    }

    Component.onCompleted: {
        myComponent.createObject(root)
        myComponent.createObject(root, {"x": 200})
    }
}

上面的代码中,myComponent对象本质上定义了一个匿名类型,可以使用Component::createObject实例化该匿名类型以创建对象。
请注意,每个Component对象声明都会创建自己的组件范围。在Component对象声明中使用和引用的任何id值在该范围内必须是唯一的,但在声明内联组件的文档中不必唯一。因此,在myComponent对象声明中声明的Rectangle可以使用root作为id值,而不会与同一文档中为Item对象声明的root冲突,因为这两个id值是在不同的组件范围声明的。

通过C++定义对象类型

详细请看下一章

版权声明:本文为fengyanyu68原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/fengyanyu68/article/details/107363952

智能推荐

QML基础类型之size

具有width和height属性的值 大小类型是指具有width和height属性的值。 例如,要读取Image :: sourceSize size-type属性的宽度和高度值: 要创建尺寸值,请将其指定为“宽x高”字符串: 或使用Qt.size()函数: 与C ++集成时,请注意,从C ++传递到QML的任何QSize或QSizeF值都会自动转换为大小值,反之亦然。 当...

QML基础类型之rect

具有x,y,width和height属性的值。 rect类型是指具有x,y,width和height属性的值。 例如,要读取Item childrenRect rect-type属性的宽度和高度值: 要创建一个rect值,请将其指定为“ x,y,宽度x高度”字符串: 或使用Qt.rect()函数: rect类型还公开了只读的left,right,top和bottom属性。 ...

QML基础类型之real

带小数点的数字。 实型是指带小数点的数字,例如 1.2或-29.8。 例: 注意:在QML中,所有实数都以双精度IEEE浮点格式存储。...

QML基础类型之point

具有x和y属性的值。 点类型是指具有x和y属性的值。 要创建点值,请将其指定为“ x,y”字符串: 或使用Qt.point()函数: 与C ++集成时,请注意,从C ++传递到QML的任何QPoint或QPointF值都会自动转换为点值。 将点值传递给C ++时,它会自动转换为QPointF值。...

QML基础类型之palette

调色板。 调色板类型是指各种角色的颜色调色板。 可用属性:...

猜你喜欢

QML基础类型之list

QML对象列表。 列表类型是指QML对象的列表。 可以通过类似于JavaScript数组的方式访问列表值: 使用[]方括号语法和逗号分隔值来分配值 length属性提供列表中的项目数 使用[index]语法访问列表中的值 可以使用push方法将值动态添加到列表中,就像它是JavaScript数组一样 列表只能存储QML对象,并且不能包含任何基本类型值。 (要在列表中存储基本类型,请改用var类型。...

QML基础类型之int

整数,例如 0、10或-20。 int类型是指整数,例如 0、10或-20。 可能的int值范围从-2000000000到2000000000左右,尽管大多数类型将只接受减小的范围 例:...

QML基础类型之geoshape

几何形状类型代表抽象地理区域。 此类型是QGeoShape的QML表示形式,它是一个抽象的地理区域。 它包括所有地理区域共有的属性和方法。 要创建代表有效地理区域的对象,请使用georectangle或geocircle。 isValid属性可用于测试地理形状是否表示有效的地理区域。 isEmpty属性可用于测试几何形状是否表示几何区域为0的区域。 contains()方法可用于测试坐标是否在几何...

QML基础类型之variant

通用属性类型。 变量类型是通用属性类型。它已过时,仅用于支持旧应用程序。新应用程序应改用var类型属性。 变量类型属性可以保存任何基本类型值: 与C ++集成时,请注意,从C ++传递到QML的任何QVariant值都会自动转换为变量值,反之亦然。 将稀缺资源与变体类型一起使用 变体类型属性也可以保存图像或像素图。包含QPixmap或QImage的变体被称为“稀缺资源”,声...

QML基础类型之var

通用属性类型。 var类型是通用属性类型,可以引用任何数据类型。 它等效于常规JavaScript变量。 例如,var属性可以存储数字,字符串,对象,数组和函数: 变更通知语义 重要的是要注意,分配给var属性的JavaScript对象的常规属性中的更改不会触发访问它们的绑定的更新。 下面的示例将显示“汽车有4个车轮”,因为车轮属性的更改不会导致重新评估分配给“...