作者:empty 出版社:empty |
Qt Quick提供了一套高动态, 丰富的QML元素来定制用户界面的说明性框架。Qt Quick有助于程序开发员与界面设计员的合作为便携式设备建立流畅的用户界面,例如:移动电话、媒体播放器,机顶盒以及上网本等。Qt Quick包含了Qt Declarative C++模块, QML并且它们全被整合到QtCreate IDE中.使用Qt Declarative C++模块可以从你的T应用程序中载入QML文件并与之互动.QML是对JavaScript一种扩展, 它提供一种机制使用QML元素来说明构建一个对象树.QML对JavaScript与Qt现有的Q Objec-t base类型系统进行整合改善; 增加了自动属性绑定的支持并提供在语言级别的网络透明度.QML元素是一套先进的图形, 就像搭积木方式那样构建界面.这些不同的元素是通过QML文档来绑在一起的, 从简单的按钮与滑块到复杂完整的应用程序, 例如一个受欢迎的Flickr照片共享网站上的照片浏览器.Qt Quick是建立在Qt固有优势的基础上.QML可被用于逐步扩展现有的程序或创建全新的应用程序.QML通过Qt Declarative模块来完全扩展C++功能.入门
QML语言入门
QML是一个说明性语言, 用来描述程序的用户界面:它的外观以及它的行为.在QML中, 一个用户界面作为一个带有属性的对象树.本篇是为有很少或没有编程经验的人准备的.JavaScript是用来作为QML的脚本语言, 所以你可能想对它了解多一点(JavaScript:The Definitive Guide) , 然后再深入QML, 另外如HTML与CSS等Web技术的基础原理也是有帮助的; 但它不是必需的.QML语言基础QML类似这样:impart Qt 4.7Rectangle(语言岛网站http://www.langisle.comNyQML杂记Tonk v翻译对象是指定的类型,紧随其后是一对大括号,对象类型总是首字母为大写,在上面的示例中,有两个对象, 一个Rectangle[矩形] 与一个Image[图像] , 在大括号之间是关于该对象特定的信息, 例如width : 200height : 200color:“blue Image{width : 100height : 100source:“pics/lago.png”anchors.center In:parent)它们的属性,属性是以property[属性] :value[值] 形式指定的, 在上面的示例中, 我们可以看到图像有个名为source[来源] 的属性, 它的值被指定为”pics logo.png”, 该属性与它的值是由冒号来分隔。属性是由单行来输写:Rectangle(}或单行输写多个属性:Rectangle lwidth:100; height : 100]Import语句导入ot模块, 它包含所有标准的QML元素, 如果没有Import语句; 那么Rectangle与这些表达式可以包含其它的对象与属性的引用,在这种情况下就会建立约束关联;当该表达式改变值当单行输写多属性/值时,必须由分号来分隔开来。Image元素将无效,表达式除了赋值属性外; 你也可以用Java so rip t编写的表达式来指定,
QML杂记
QWidget封装了界面外观是非常重要的, 对QML概念也服务同一目的。如果你开发一个完整的应用程序,应用有一致的界面外观。你应该构建可以重用的组件集所以你要实现一个可以重复使用的按钮, 只需简单的构建一个QML组件即可,父级组件有时候需要把界面分成几大类, 每个类放任意个其它的部分.Qal bWidget就提供一个多“页面“的界面, 在任何时间只能切换到其中一个页面, 一个QS collAred提供一个滚动条来扩大界面有效空间,几乎所有的组件都可以直接在QML创建。只有少数情况下, 需要非常特殊的事情处理, 例如Fil ck able需要C++完成,QML相较于Qt组件的父级概念是有显着差异的, 子级项目是定位相对于它们的父级, 在这里没有需要它们被整个包含到父级。这种差异影响是深远的,例如:组合组件有些组件通过包含其它组件提供”实现细节“的功能。例如Q Spin Box是一个行编辑与两个增加/减少值的按钮.QFileDialog使用了一大堆组件来为用户提供一个寻找与选择一个文件名的方式。在开发可重复使用的QML项目时; 你可以选择做同样的事情:构建你已经定义的其它项目组成一个项目.唯一要考虑是你构建的复合组件是用户期望的那样动画与变换,例如一个微调框可能需要从任意文本或字符项目平常的过渡,因此微调框项目需要足够的灵活性,允许这样的动画.QML项目与Q Graphics Widgets比较QML项目与Q Graphics Widgets之间主要区别是如何使用。技术实现细节大致相同; 但实际上它们是不同的, 因为QML项目需要声明与合成使用, Q Graphics Widgets是更为整合的使用。QML项目与Q Graphics Widgets都继续自Q Graphics Object, 可以并存。差别是布局系统与其它组件的接口。如Q Graphics Widgets趋向于将所有功能集为一身, 一个Q Graphics Widgets可能有多个独立的QML文件交叉许多QML项目组合而成的; 但它仍然被C++载入与使用作为单个Q Graphics Object,语言岛网站http://www.langisle.com15QML杂记Tonk v翻译Q Graphics Widgets是设计为被Q Graphics Layouts布局的, QML则不使用Q Graphics Layouts, 由于Qt的布局器不能混合动画与流体界面; 所以几何体界面是主要差别之一,当编写QML元素时; 可以使设计人员能够使用绝对的几何体, 绑定或锚来放置它们的边界矩形并不使用布局或尺寸伸缩器, 如果尺寸适当的提示; 那么在QML文件里放置它们, 从而使设计者知道如何使用项目最好;但仍具有完全的控制界面外观,其它区别在于Q Graphics Widgets往往遵循组件模式, 它们是一个用户界面与逻辑的自我包含绑定,与之相反的是QML通常是单一项目, 就其本身井不满足使用的情况。所以当编写QML项目, 尽量避免做UI逻辑或项目内部合成可视元素;转为编写更为通用的基元,使外观(如涉及UI逻辑)被编写在QML中,两者间的差别是由于不同的互动方式。Q Graphics Widget是Q Graphics Object子类使C++更容易开发流体用户界面, Q Declarative Item是Q Graphics Object子级使QML开发流体用户界面, 因此公开界面是主要区别之一以及使用它来设计项目(声明元素用于QML而井Q Graphics Widget, 因为你需要编写自己的界面逻辑到子类),如果你想同时使用QML与C++来编写用户界面, 例如:缓进过渡期, 建议使用Q Declarative Item子类(尽管你同样可以使用Q Graphics Widgets) , 以允许更容易使用从c++使根项目的每一个c++组成一个布局器项目、载入单个的QML组件(可能是由多个QML文件, 并包含一个独立的用户界面和逻辑) 到你的场景来替换单独的Q Graphics Widgets,使用QML程序设计入门欢迎来到QML, 描述性UI语言的世界。在本入门指南中, 我们将使用QML创建一个简单的文本编辑器应用程序, 看完本指南后, 你应该可以使用QML与QtC++开发自己的应用程序了。QML构建用户界面这个应用程序是一个简单的文本编辑器,有载入、保存以及一些文本处理操作。本指南包括两在部分。第一部分将涉及使用QML描述性语言设计应用程序布局与行为。第二部分使用QtC++完成文件载入与保存功能部分, 使用Qt的元对象系统, 我们导出C++函数作为QML元素属性使用。利用QML与QtC++我们可以有效的从应用程序逻辑中分离出界面逻辑,语言岛网站http://www.angisle.com16围绕组件的阴影或高亮可能是该组件的子级。
empty