【QML】在qml开发中定义对象类型

一、引言

对象在程序设计领域是极其重要的概念,与哲学有着密切联系,哈哈,展开怕会扯到“形而上学”、“四书五经”。言归正传,本文来聊一聊和记录一些关于qml开发中对象的概念。

从软件工程角度出发,分而治之,一个软件模块或者软件组件等,会由许多对象实体组成。例如C++中类和对象的概念,当然多态、继承、封装等C++经典思维就不聊了。

使用qml进行软件开发,“对象思维”同样引领着qml软件的开发,软件的基础架构、软件组成源文件的规划等。

文本主要记录内容如下:

(1)在qml中如何自定义自己的对象

(2)定义自定义对象的可访问属性

​ qml中的内置对象,例如矩形、文本和图像等用于构建QML应用程序;这些对象都处于比较小、底层的一些对象。当我们将其进行组合后构建了一个比较大、比较贴合目前软件项目的代码后,我们往往需要将其重构为自定义的qml的自定义模块,以便在软件中使用或者重复使用。下文将记录如何实现自定义的qml类型。

【内容为qml开发的基础内容,比较简单;重要的还是想提醒自己需将“对象思维”运用到实际的qml软件开发过程中】

二、使用QML文件定义对象类型

​ 要创建QML对象类型,编写的QML代码应该放在名为<TypeName>的文本文件中。其中<TypeName>是所需的类型名称。类型名称要求如下:

(1)它必须由字母数字字符或下划线组成。

(2)必须以大写字母开头。

​ 然后,该文档被qml引擎自动识别为QML类型的定义。此外,当解析QML类型名称时,引擎在直接目录中搜索时,以这种方式定义的类型将自动对同一目录中的其他QML文件可用。

​ 总而言之,以单个qml文档为一个对象类型(注意文件名称首字母需要大写,不然无法qml引擎无法识别哟)。如果在同一个目录下包含有多个对象类型,当某个对象类型需要引用同目录中的其他对象类型时,不用使用import进行包含。qml引擎将自动识别。

例如自定义了一个返回按钮对象类型:ReturnBtn.qml

import QtQuick 2.4
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.3
Image {
    id: returnIcon_128
    source: "qrc:/asserts/images/returnIcon_128.png"
    fillMode: Image.PreserveAspectFit
    signal clicked
    MouseArea {
        anchors.fill: returnIcon_128
        onClicked: {
            returnIcon_128.clicked()
            m_mainApp.swipeView1.setCurrentIndex(0)
        }
        onPressed: {
            glow.visible = true

            glow.color = "lightskyblue"
        }
        onReleased:{
            glow.visible = false
        }
    }
    Rectangle {
        id: glow
        visible: false
        opacity: 0.4
        anchors.fill: returnIcon_128
        color: "#00000000"
        radius: 125
        scale: 1.05
        border.color: "black"
    }
}

​ 由上代码所示,ReturnBtn对象由Image和一个MouseArea、一个Rectangle对象组成。那么ReturnBtn即可在其中对象中使用了。将其加入到qml的对象树中即可使用、

​ QML文件中的根对象定义定义了QML类型可用的属性。属于这个根对象的所有属性、信号和方法——无论它们是自定义声明的,还是来自根对象的QML类型——都可以从外部访问,并且可以对对象进行读取和修改。

​ 例如,上列代码中,ReturnBtn.qml文件中ReturnBtn对象的根对象类型是Image。那么可以通过ReturnBtn对象修改Image类型定义的任何属性,同样的也可以访问ReturnBtn对象中使用property自定义的属性。

三、注意事项

如何引入存在于其他目录下的自定义qml对象类型?

​ 方法如下:

​ (1)使用【import 文件系统的相对路径】导入

​ (2)将该目录下的所有的自定义的qml类型作为模块模块导入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iriczhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值