QML项目文件组织

来源:互联网 发布:ubuntu git 支持中文 编辑:程序博客网 时间:2024/06/09 19:18
开发 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"}
}
0 0
原创粉丝点击