当前位置: 澳门新濠3559 > 操作系统 > 正文

JavaScript在QML中作为一种脚本语言,用大量篇幅介

时间:2019-12-21 19:57来源:操作系统
如题,本人在闲来无事研究Qt的时候发现一个困扰了很久的问题:Qt自动生成的main.cpp中QApplication和QMainWindow都是创建在栈上的: 以下内容为本人的学习笔记,如需要转载,请声明原文链接

如题,本人在闲来无事研究Qt的时候发现一个困扰了很久的问题:Qt自动生成的main.cpp中QApplication和QMainWindow都是创建在栈上的:

以下内容为本人的学习笔记,如需要转载,请声明原文链接 [englyf]

利用奇趣科技公司(Trolltedl)的Qt应用程序框架,可以构建出工业级的跨平台应用程序。在源代码不经任何修改的情况下,这些程序即可流畅运行于Windows、Linu/UNIX、Mac OS X和嵌入式Linux上“一次编写,随处编译”。

简述

intmain(intargc,char**argv){QApplicationa(argc,argv);QMainWindoww;w.show();returna.exec();}

澳门新濠3559 1

本书对Qt进行了全面介绍,充分展示了Qt程序开发模式中的每一个细节。奇趣科技公司就是采用这样一本包含诸多实际应用和深刻见解的书籍来对新员工进行Qt培训的。在本书中,除了可以找到诸如数据库访问、XML集成、自定义控件的创建等成熟完善的技术以外,还可以为每一项实际的GUI开发任务找到最佳的解决方案。

前言:

QML(Qt Modelling Language)是一种描述性的脚本语言,文件格式以.qml结尾。语法格式非常像CSS(参考后文具体例子),但又支持javascript形式的编程控制。我个人认为它结合了QtDesigner UI和QtScript的优点。QtDesigner可以设计出·ui界面文件,但是不支持和Qt原生C++代码的交互。QtScript可以和Qt原生代码进行交互,但是有一个缺点,如果要在脚本中创建一个继承于QObject的图形对象非常不方便,只能在Qt代码中创建图形对象,然后从QtScript中进行访问。而QML可以在脚本里创建图形对象,并且支持各种图形特效,以及状态机等,同时又能跟Qt写的C++代码进行方便的交互,使用起来非常方便。

QML是一种陈述性语言,用来描述一个程序的用户界面:无论是什么样子,以及它如何表现。在QML,一个用户界面被指定为具有属性的对象树。

QML实际上是Qt Quick (Qt4.7.0中的新特性)核心组件之一:Qt Quick是一组旨在帮助开发者创建在移动电话,媒体播放器,机顶盒和其他便携设备上使用越来越多的直观、现代、流畅UI的工具集合。

这其中有什么道理吗?为什么不把它创建在堆上?

当你重新建立一个 Qt Quick 工程时,可以有下面的选择:

对于本书讲授的大量Qt4编程原理和实践,读者可轻松将其应用于Qt4.4、Qt4.5以及后续版本中的Qt程序开发过程之中。

QML特性:
  • QML 是一种用户界面规范和编程语言。它允许开发人员和设计师创建高性能、流畅的动画和视觉吸引人的应用程序。
  • QML 提供了一种高度可读、声明性、类似 JSON 的语法,支持与动态属性绑定相结合的命令JavaScript 表达式。
  • 像脚本语言一样定义界面的元素
    1.是对 ECMAScript 标准的扩展(参见:JavaScript)
    2.提供了建立一颗 QML 元素对象树的机制
    3. 支持 QML 元素和基于 QObject 的 C++ 对象之间的交互
  • QML 包含了一套 QML 元素
    1.图形的和行为的基础组成部分
    2.可以通过 QML 文档来建立更加复杂的元件和 QML 应用
  • 可以用来对现有程序扩充,或是编译一个全新的程序
    1.QML 可以使用 C++ 完全扩展

JavaScript在QML中作为一种脚本语言,对QML进行逻辑方面的编程。例如:

Rectangle {
id: rect
color: "black"

// following italic type code is javascript
function fun() {
if(rect.color == "black") {
rect.color = "red"
}
else {
rect.color = "black"
}
}

.....
MouseArea {
id: mouse
onClicked: {
fun()
}
}
.....
}

上面function函数内就是javascript,意思是,当方块颜色是黑色的时候点击就变红,反之变黑。你可能想先多了解一下JavaScript,然后再深入学习QML, 而对类似于HTML和CSS等网络技术有一些基本理解也是有用的。但它们都不是必需的。

  • Qt Quick Application - Empty 创建 Qt Quick 2 的软件工程会包含有 QML 和 C++代码。 基于此类工程,你可以构建应用并且部署到桌面、嵌入式和移动目标平台。

  • Qt Quick Application - Scroll 使用 ScrollView 类型来实现一个可滚动列表视图 (需要 Qt 5.9 或者更高版本)。

  • Qt Quick Application - Stack 使用 StackView 类型去实现一组基于堆的导航模型页面 (需要 Qt 5.7 或者更高版本)。

  • Qt Quick Application - Swipe 使用 SwipeView 类型去实现一组基于滑动的导航模型页面 (需要 Qt 5.7 或者更高版本)。

  • Qt Quick UI Prototype (在 Other Project 项目类别中) 使用一个包含主视图的单独 QML 文件创建一个 Qt Quick UI 项目 。 你可以在 QML Scene preview tool 中查看 Qt Quick 2 UI 项目。由于不包含 C++ 代码,所以你不需要编译它就能看到视觉效果。 只有当你在做原型设计时才可以使用这种工程,而且这种工程并不能创建一个完整的应用。

    Qt Quick UI 工程的项目并不能被部署到嵌入式或者移动目标平台。对于那些平台,你可以创建一个 Qt Quick 类型的项目作为代替。

  • Qt Quick 2 Extension Plugin (在 Library 类别中) 创建C++ 插件,提供可以被动态加载到 Qt Quick 2 applications 中的扩展 。

本书特点:

什么是 Qt Quick?

Qt QuickQML 类型和功能的标准库。包括视觉类型、交互式类型、动画、模型和视图、粒子效果和着色效果,可以使用单个 import 语句访问所有功能。
Qt Quick 全称:Qt User Interface Creation Kit,主要包含以下特征:

  • 一个为创建更好的界面的高级 UI 技术
    无需掌握 C++ 技术,JavaScript 知识会有不少帮助

  • 针对界面设计人员和开发者

使设计师和开发人员“说同样的语言”
双方可以同时参与迭代开发
无需单独的 Flash 或 PPT UI 原型

设计人员用 Qt Quick,我猜一定是想多了,“自娱自乐”下就行!

注意: 某个特定平台的 SDK 会为该平台安装额外的模板。例如, QNX 模板会作为QNX SDK 的一部分来安装 。

彻底更新了上一版的内容,用大量篇幅介绍了数据库、XML以及Qtopio/嵌入式开发

QML/Qt Quick 总结
  • Qt 的 meta-object 系统提供了 QML 和 C++ 关联的机制
1.Qt 属性机制
2.信号与槽机制
  • QML 为开发人员预定义了一套类型
1.可以很容易的使用 QML 进行扩展
2.可以使用 C++ 进行扩展
  • Qt Quick 用来为开发人员设计 Qt 应用程序的可视化界面

了解 JavaScript(+ HTML + CSS)是学习 QML 的前提条件,虽然没有严格的要求,但还是建议掌握。

Qt Creator 会创建需要的样板文件。其中的一些文件是特定于特定平台的。

涵盖Qt 4.2/4.3中的所有变动,包括对Windows Vista的支持、对窗口部件风格在CSS本地化方面的支持以及SVG文件的生成等

开发工具

Qt Creator是 Qt 开发的首选工具,当然,也可用于 Qt Quick。
Qt 提供了一个 qmlscene 工具(Qt 4.x 为 qmlview),用于运行单独的 QML/JavaScript 程序。

  • 让我们可以直接查看 qml 文件,而不必将其加载到 Qt 应用中。
  • 主要是用于开发测试
  • 提供了一种“dummy”机制,动态的为 QML 提供数据
  • 最终的数据将由 Qt/C++ 代码所提供

注意:要将 QML/Qt Quick 界面嵌入到 Qt/C++ 应用程序中,需要使用 Qt4.7 及以上版本(最新官方版本 Qt 5.7)。

创建空的 Qt Quick 应用

  1. 选择 File > New File or Project > Application > Qt Quick Application - Empty > Choose
  2. Name 字段中,输入应用的名字。
  3. Create in 字段中,输入工程文件路径,然后选择 Next (或者 macOS 系统下选择 Continue)。
  4. Build system 字段中,选择构建工具用于构建和运行工程: qmake,CMake,或者 Qbs。
  5. 选择 Next
  6. Minimal required Qt version 字段中, 选择适配的最低 Qt 版本。这个 Qt 版本决定了 QML 文件中可以导入的 Qt Quick 版本。
  7. 选择 Use Qt Virtual Keyboard 复选框以添加应用对 Qt Virtual Keyboard 的支持。
  8. 选择 Next
  9. 为运行和构建你的应用,选择 kits,然后点击 Next注意: Kits 必须在 Tools > Options > Kits 中先指定才可以显示。
  10. 检查工程设置,然后点击 Finish (当系统是 Windows 和 Linux 时) 或者 Done (当系统是 macOS 时) 完成创建工程。

Qt Creator 创建一个 QML 文件 main.qml,你可以在设计模式下修改它。

将二维图形和三维图形分为两章阐述,涵盖了Qt4.3中许多新出现的图形视图类,并且还介绍了QPainter的OpenGL后端在外观定制和应用程序脚本化方面,引入了一些新的章节阐明了Qt 4的模型/视图结构、插件支持、布局管理、事件处理、容器类,等等

创建 Qt Quick Controls 2 应用

  1. 选择 File > New File or Project > Application > Qt Quick Application - ScrollQt Quick Application - Stack,或者 Qt Quick Application - Swipe > Choose.

  2. Name 字段中输入工程名。

  3. Create in 字段中填入工程路径,然后点击 Next (或者 macOS 下的 Continue).

  4. Build system 字段中,选择构建工具用于构建和运行工程: qmake,CMake,或者Qbs。

  5. Qt Quick Controls 2 Style 字段中,选择其中一个预定义的 UI styles 使用,然后点击 Next

  6. 选择 Use Qt Virtual Keyboard 复选框以添加应用对 Qt Virtual Keyboard 的支持。

  7. 为你应用的运行平台,选择对应的 kits。如果是移动设备的应用,请选择 Android ARM 和 iPhone OS 的 kits,然后点击 Next

    注意: Kits 必须在 Tools > Options > Kits (如果是 Windows 和 Linux) 或者 Qt Creator > Preferences > Kits (如果是 macOS) 中先指定才可以显示。

  8. 选择 Next

  9. 检查工程设置,然后点击 澳门新濠3559,Finish (当系统是 Windows 和 Linux 时) 或者 Done (当系统是 macOS 时) 完成创建工程。

对于 Scroll 工程,Qt Creator 会创建一个 QML 文件 main.qml,您可以在设计模式下修改它。对于 Stack 和 Swipe 应用,Qt Creator 会创建 2 个 UI 文件 Page1Form.ui.qml 和 Page2Form.ui.qml,您可以在 Form Editor 中修改它,另外还有一个你可以在 Text Editor 中修改和添加逻辑的 QML 文件 main.qml。

介绍了其他书籍中所没有的许多高级技术——包括从插件的创建到与本地API的集成。

创建 Qt Quick UI 工程

Qt Quick UI 工程对于用户界面的测试和原型设计,或者设置单独的工程仅仅是用于编辑 QML 都非常有用。这种工程不能用于开发应用,因为缺少了下面的这些内容:

  • C++ 代码
  • 资源文件
  • 部署应用到指定 devices 的代码

创建 Qt Quick UI 工程步骤:

  1. 选择 File > New File or Project > Other Project > Qt Quick UI Prototype > Choose

  2. Minimal required Qt version 字段中, 选择适配的最低 Qt 版本。这个 Qt 版本决定了 QML 文件中可以导入的 Qt Quick 版本。

    你可以稍后添加导入 Qt Quick,然后将 Qt Quick 的基本类型与控件、窗体、布局(Qt 5.1 或者更高版本)组合使用。

  3. 选择 Use Qt Virtual Keyboard 复选框以添加应用对 Qt Virtual Keyboard 的支持。

  4. 点击 Next (或者 macOS 下的 Continue).

  5. 检查工程设置,然后点击 Finish (当系统是 Windows 和 Linux 时) 或者 Done (当系统是 macOS 时) 完成创建工程。

过程中 Qt Creator 将创建以下的文件:

  • .qmlproject 工程文件,定义了工程文件夹下工程所有的 QML,JavaScript,图片文件。所以,你不需要逐个地列出工程的所有文件。
  • .qml 文件定义了一个 UI 项,例如一个组件,屏幕,或者整个应用 UI。
  • ui.qml 文件定义了一个应用 UI 的表单。当你勾选了 With .ui.qml file 选项之后,这个文件才会被创建。

如果你需要在工程中使用相应的 JavaScript 和图像文件,请把它们拷贝到工程文件夹中。

参考英文资料[Qt]

专门用一个附录介绍了最新发布的Java版Qt Jambi。

澳门新濠3559 2

内容简介

本书详细讲述了用最新的Qt版本进行图形用户界面应用程序开发的各个方面。前5章主要涉及Qt基础知识,后两个部分主要讲解Qt的中高级编程,包括布局管理、事件处理、二维/三维图形、拖放、项视图类、容器类、输入/输出、数据库、多线程、网络、XML、国际化、嵌入式编程等内容。对于本书讲授的大量Qt4编程原理和实践,都可以轻易将其应用于Qt4.4、Qt4.5以及后续版本的Qt程序开发过程中。

本书适合对Qt编程感兴趣的程序员以及广大计算机编程爱好者阅读,也可作为相关机构的培训教材。

目录
第一部分 Qt基础
 第1章 Qt入门                 
 第2章 创建对话框         
 第3章 创建主窗口                
 第4章 实现应用程序的功能      
 第5章 创建自定义窗口部件     
第二部分 Qt中级
 第6章 布局管理
 第7章 事件处理
 第8章 二维图形
 第9章 拖放
 第10章 项视图类
 第11章 容器类
 第12章 输入与输出
 第13章 数据库

免费下载地址在

用户名与密码都是www.linuxidc.com

具体下载目录在 /2012年资料/6月/4日/C编程(第二版)(中文高清PDF扫描版)@随书源码/

澳门新濠3559 3

编辑:操作系统 本文来源:JavaScript在QML中作为一种脚本语言,用大量篇幅介

关键词: