QML项目文件组织

开发 Qt Quick 项目需要用到 QML,每个 QML 文件都可以成为一个组件。
一个大规模项目,难免用到众多组件(也就是要写多个 QML 文件),这些组件按照文件的组织,可能分布在不同文件夹下。
在 QML 文件看来,不同文件夹下的组件属于不同的包。

因此,一个 Qt Quick 项目中的 QML 组件组成和使用方式可能如下:

先看 QML 的项目文件,也就是“*.qmlproject”文件。其内容通常如下:
import QmlProject 1.1
 
 
Project {
    mainFile: "*.qml"
 
 
    /* Include .qml, .js, and image files from current directory and subdirectories */
    QmlFiles {
        directory: "."
    }
    JavaScriptFiles {
        directory: "."
    }
    ImageFiles {
        directory: "."
    }
    /* List of plugin directories passed to QML runtime */
    // importPaths: [ "../exampleplugin" ]
}
 
该文件包含了 QML、JS、Img 等文件的路径,在 QML 文件路径下的 QML 组件都可以直接使用。
例如,*.qmlproject 与 G01.qml、G02.qml 位于同一目录下(组件的名必须以大写字母开头),则在 G01.qml 中可以这样使用 G02.qml。
import QtQuick 2.0
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
 
 
ApplicationWindow {
    title: qsTr("Hello World")
 
 
    G02{x:0; y:0}
}
这是因为:“对于同一目录中的其他 QML 组件和应用程序来说,新建的 QML 组件文件会自动成为新的 QML 元素类型。”——《Qt 及 Qt Quick 开发实战精解》
果另有 G03.qml 位于 *.qmlproject 的下一级文件夹“folder”下,则需要先在 G01.qml 中引入“folder”这个包:
import QtQuick 2.0
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
import "folder"
ApplicationWindow {
    title: qsTr("Hello World")
    G02{x:0; y:0}
    G03{x:0; y:25}
}
可以看到,在 G01中可以直接使用 G03 的根属性(如:x、y)。但如果想在要在 G01.qml 中使用 G03 的内部对象的属性,则需要这样编写 G03.qml:
import QtQuick 2.0
Rectangle {
    id: rec
    property alias text1:textItem.text
    width: 100; height: 20; color:"orange"
    Text{id: textItem; color:"black"}
}
这里的 Rectangle 即为根元素。其他组件可以直接使用根元素的属性,如上面说的x,y属性。根元素内部创建了一个 Text 类型的 textItem 对象,”property alias text1: textItem.text“这句是为 textItem 对象的 text 属性重新指定了一个名称——text1,这样,其他组件才可以使用 text1 属性。例如 G01 可是这样使用 text1 属性。

import QtQuick 2.0
import QtQuick.Controls 1.2
import QtQuick.Window 2.2
import "folder"
ApplicationWindow {
    title: qsTr("Hello World")
    G02{x:0; y:0}
    G03{x:0; y:25}
    G03{x:105; y:50; text1:"Grape"}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lionchan187

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

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

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

打赏作者

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

抵扣说明:

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

余额充值