在qml工程中怎么使用qmldir进行模块管理

关于qmldir这个文件,在qml模块化管理中可是必不可少的东西,这里的模块化既是c++扩展的模块指又是指纯qml拓展的模块

这里取纯qml中如何使用qmldir进行管理

参考QtSDK中的文档 Module Definition qmldir Files

参考 制作Qt Quick 2 Extension Plugin的几个问题-Qt

这里先说一个qml的工程文件 .qmlproject

一般如下

/* File generated by Qt Creator */

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: [ "../exampleplugin" ]
}

使用的单词很明白,表明了此qml工程的qml文件的路径,js文件的路径,图片路径,还有一个是被自动注释的importPaths属性,是一个list对象(js中的Array对象),存放着自定义的qml模块路径。

现假设有如下qml工程,其工程路径如下所示

| Test.qmlproject
| Modules
| |UI
| | | qmldir
| | | Button.qml
| | | util.js
| main.qml

其中main.qml是qml程序的入口主文件,与其同目录还有一个Modules文件夹,这个文件夹下有一个UI文件夹,这个UI文件夹包含一个自定义Button.qml,一个js文件以及一个qmldir文件。

那么qmldir这个文件的内容如下

module UI
Button 1.0 ./Button.qml
Util 1.0 ./util.js

# 这个是注释
# 说说语法
# module 后面的那个单词就是模块名,一般与qmldir文件所处文件夹同名
# 第二行,先说明一个自定义控件(element)的名字,再指定版本号,最后指定对应的qml文件
# 第三行,先说明一个js文件在qml中被调用时的名字(类似于名字空间) ,再指定版本号,最后指定对应的js文件
#更多详细资料请在qtsdk中搜索 Module Definition qmldir Files

qmldir中,指定自定义的element名必须是大写字母开头,然后要指定版本号,这里是为了进行版本区分。

例如有两个button1.qml和button2.qml

于是便可以使用如下语句进行版本区分

Button 1.0 ./button1.qml
Button 2.0 ./button2.qml

在qml工程文件中就可以添加这么一句

importPaths:["./Modules"]

在调用模块的qml文件使用import就可导入模块了

import UI 1.0;

这样就可以很方便的调用自定义图元控件了。也可以直接进行控件的版本管理。

另外给大家介绍一个qml实现的UI库

qml-material

演示

时间: 2024-08-12 03:46:16

在qml工程中怎么使用qmldir进行模块管理的相关文章

iOS工程中,汉字字符串的统一化管理(非国际化)

实现类似于安卓工程中的字符串引用机制,便于汉字字符串的统一管理. Step01:创建,步骤如下: Step02:定义,步骤如下图: Step03:使用: // 宏工具 // L10N为strings的名字, 不传默认为Localizable #define L10NString(key) [[NSBundle mainBundle]localizedStringForKey:key value:@"" table:@"L10N"] // 使用 NSString *h

Spring Framework------>version4.3.5.RELAESE----->Reference Documentation学习心得----->Spring Framework中的spring web MVC模块

spring framework中的spring web MVC模块 1.概述 spring web mvc是spring框架中的一个模块 spring web mvc实现了web的MVC架构模式,可以被用于开发web网站 spring web mvc 实现web网站的原理,如下图: 2.使用spring web mvc开发web应用的步骤 step1:在自己的工程中引入spring web mvc模块 step2:配置spring web mvc模块 中的DispatcherServlet,告

.net 工程中引用出现感叹号

在工程中引用出现感叹号,有两个原因 原因1:  这是由于之前引用的Dll文件不见了. 右键有感叹号的项,然后选择 "属性" 里边有一个路径属性 这个路径就是之前这个Dll文件的路径,现在这个文件不在了,你需要找到现在这个文件的路径 右键有感叹号的项,然后选择"移除" 右键"引用",选择添加引用,然后选择那个不在的dll的真实路径 其他的项用相同的方式处理 原因2:可能是引用的.Net版本高于了当前工程的.Net版本 更改所引用的工程文件的.Net

在Qt工程中加Boost

摘要: Boost是一个很强大的C++库,堪比STL,里面有很多非常优秀的类库.我不多介绍,详情见官网:http://www.boost.org/ 要在我们的Qt工程中把这个库加进去应该怎么做呢?我今晚试了一下. Boost是一个很强大的C++库,堪比STL,里面有很多非常优秀的类库.我不多介绍,详情见官网:http://www.boost.org/ 要在我们的Qt工程中把这个库加进去应该怎么做呢?我今晚试了一下. 我从网上下载了Boost压缩文件,下载地址:boost_1_52_0.tar.g

step4----->往工程中添加Spring的子项目spring IO Platform------->通过maven添加相关框架(pom.xml)

添加Spring IO Platform的目的: 避免自己的project的外部依赖(external dependencies)之间产生版本冲突问题.更多详细信息参见:Spring IO Platform概述 具体操作步骤: step1,往自己的工程中添加Spring IO Platform 编写project的pom.xml,添加如下代码,引入Spring IO Platform <dependencyManagement> <dependencies> <depende

step4---&gt;往工程中添加Spring框架----&gt;修改maven的配置文件pom.xml,向工程中添加spring框架的某些模块

1.本文内容: 本文介绍使用maven向自己的项目中添加各种框架的方法,即如何配置maven的pom.xml来让maven帮助管理这些框架(包括Spring.SpringMVC.hibernate框架等等). 2.使用maven向自己的工程中添加框架: 2.1概述 若想使用maven向自己的工程中添加三方框架(如Spring.SpringMVC等),需要先确保你的工程是maven工程,如果你还不知道该如何在myeclipse中建立一个maven web project,请参考相关教程. 2.2使

在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)

[cpp] view plain copy // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <crtdbg.h> /// 在C++工程中main函数之前跑代码的廉价方法 /// 利用全局变量可以赋可变初值的事实 /// mainCRTStartup() => _cin

在VC工程中添加多语言支持[转]

随着贸易国际化,在软件开发过程中,常会碰到需在现有中文版软件加入多语言支持的情况.由于不同语言版本间的差别通常仅是软件操作界面的不同,为实现多语言支持,使用纯资源DLL是一个不错的解决之道.所谓纯资源DLL是指只包含资源的DLL,譬如:快捷键.对话框.字符串.菜单.工具条.位图.图标.版本信息等等. 具体做法是:利用VC可视化编辑环境为每种语言制作一套资源ID一一对应的资源集并编译生成DLL文件.应用程序初始化时按预设的语言设置选择合适的资源DLL调入,使用资源时依据资源ID进行访问,这样即可实

Android工程中加入图片,报错cannot be resolved or is not a field

SDK和ADT为22.6.2版本 工程为4.4.2 今天在写Android代码的时候,往工程中加入了几张图片,然后在代码中使用R.drawable调用时,一直报错 cannot be resolved or is not a field 然后我查看了gen目录下的R.java文件,发现里面已经有我加入的图片资源ID了,觉得很奇怪,一般是无法生成R.java文件的时候才会出现这种现象啊 在网上查了资料也未见有可以解决我这个问题的方法,然后我就把我的代码从头到尾重新看了一遍,开始也没有发现什么异常,