有关 QtQuick UI 的问答
什么是
QtQuick UI
?
是一个由
qmlproject
为后缀名的文件所管理的纯 QML 项目。qmlproject
文件本身就是qml
的语法。按下
ctrl
+N
,仔细找,一定能找到QtQuick UI
这个选项的。
使用
QtQuick UI
项目有什么好处?
首先
QtQuick UI
是一个纯 QML 项目,没有 c++ 的文件,也就意味着不用编译 c++,就像浏览器打开 html 那样,QML 的文件使用一个名为qmlscene
的程序打开的。其次使用 QML 的目的是快速开发,而 c++ 和
qrc
资源文件漫长的编译时间让快速开发成为一个不小的障碍。
既然
QtQuick UI
是纯 QML 项目,是不是意味着无法直接和 C++ 交互?
是的,但是可以通过插件的方式来处理, qmlscene
支持加载 QtQuick 2
插件。怎么构建 一个 QtQuick 2
插件呢?直接搜索即可找到你想要的。
既然
qmlproject
是纯 QML 项目的项目文件,那么和pro
有什么类似的功能吗?
pro
文件是管理 Qt C++ 的项目文件,可以在里面指定源码,qrc
资源,OTHER_FILES
,c\c++ 库。相对于
pro
,qmlproject
也有源码和资源的概念。源码直接是*.qml
,资源的话,一般是指图片。这里给出一些使用技巧。先看如下的代码示例:
/* 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,有 import
,也有一个根对象。
mainFile: "main.qml"
这个项目文件指明了此项的入口文件是 main.qml
。
如果你把行代码注释的话,是不是这个项目就没有入口文件,然后就无法启动了呢?
答案是否定的。由于没有在 qmlproject
中指定入口文件,所以 qmlscene
就会直接运行当前,你所打开的那个 qml 文件。这样就可以有更高级的用法了。
例如我编写一个 test_my_button.qml
用来测试自定义的 Button
,此时只要注释掉 qmlproject
中的 mainFile
,然后在编辑器打开 test_my_button.qml
,ctrl
+R
运行,就可以看到按钮的效果了,测试变得如此简单!
往下看 QmlFiles
,嗯,见文生义。就是指定 directory
(目录)下的所有 *.qml
文件。
其他 JavaScriptFiles
和 ImageFiles
。
然后你问我想在我这个
QtQuick UI
项目中显示其他格式的文件,怎么写?
这里就要祭出 Files
了。
Files {
fileter: "*.md"
directory: "."
}
这段就是获取所有文件后缀名为 md
的文件。
importPaths
这个东西文章不好写。你直接看这个项目 Sparrow.2,代码层面去理解他吧。(下载,然后用 QtCreator 打开 *.qmlproject
文件)。