.qmlproject文件中一般的写法:
import QmlProject 1.1
Project {
mainFile: "main.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: [ "./modules","./demo" ]
}
mainFile指定qmlviewer加载的第一个文件,可以忽略,然后在QTCreator中的Project设置中选定主文件。
一般来说,不使用qmlviewer工具加载程序的话,不需要关心这个,因为从C++启动加载qml是十分常见的。
QmlFiles,JavaScriptFiles,ImageFiles指定qml js 和图像文件的路径
指定工程的文件
imporPaths则指定qmlviewer运行时遇到import模块时搜索的路径。
不知道从C++启动加载QML时,这个有没有用。
模块导入方法:
支持QML模块化
1、大写字母开头的.qml文件,可以将文件名看作模块进行导入。例如存在文件夹Modules下的MyButton.qml。导入方法:
import Modules
import MyButton
或者 import Modules.MyButton
2、若在同一文件夹下,访问模块不需要import声明即可直接调用
需要注意方法1和方法2都需要将模块文件名第一个字母进行大写。
3、使用qmldir
qmldir的作用有2种:listing directory files和module definition
使用qmldir的优点在于:
A、qml文件的路径可以移动
QML文件改变路径时,只需要修改此QML文件所在文件夹里的qmldir文件。这样更方便整个程序的维护。
B、可以进行版本管理
MyType 1.0 MyType.qml
支持兼容:
MyType 1.1 MyType.qml
MyWindow 1.2 MyWindow.qml
import Module 1.2会支持MyType 1.1和MyWindow 1.2
import Module 1.1只能引入MyTyep 1.1 (MyWindow1.2只支持1.2版本后的)
import Module 1.3/1.0 会报错(没有1.3或者1.0的版本)
支持同一个类型多个版本
MyType 1.1 MyType11.qml
MyType 1.3 MyType13.qml
MyType 1.5 MyType15.qml
MyWindow 1.4 MyWindow14.qml
那么import Module1.4会引入 MyWindow1.4和MyType1.3(比他小的最接近的)
C、可以集成js文件和c++插件
Plugin myplugin(没有版本信息)
MyFunction 1.1 MyFunction.js
D、远程导入时,可以隐藏私有模块
Internal PrivateModule PrivateModule.qml。
(例如PrivateModule.qml只是一个内部使用的类型,在远程导入时,用户就看不到这个文件)
E、导入描述信息
typeinfo mymodule.qmltypes.
F、依赖文件
depend MyOtherModule 1.0