欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2024-01-02 11:08:16
...

引言

用了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++定义对象类型

详细请看下一章

相关标签: QML qml

上一篇:

下一篇: