QML 和QtQuick2
来源:互联网 发布:星际公民 知乎 编辑:程序博客网 时间:2024/05/21 06:14
来源:https://www.devbean.net/2013/12/qt-study-road-2-qml-and-qtquick2/
从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt Meta Language 或者 Qt Modeling Language),作为 C++ 语言的一种替代。而 Qt Quick 就是使用 QML 构建的一套类库。
QML 是一种基于 JavaScript 的声明式语言。
QML 文档描述了一个对象树。QML 元素包含了其构造块、图形元素(矩形、图片等)和行为(例如动画、切换等)。这些 QML 元素按照一定的嵌套关系构成复杂的组件,供用户交互。
Text { id: label x: 24; y: 100 text: "Space pressed: " + spacePresses + " times" // 自定义属性,表示空格按下的次数 property int spacePresses: 0 // (1) 文本变化的响应函数 onTextChanged: console.log("text changed to:", text) // 接收键盘事件,需要设置 focus 属性 focus: true // (2) 调用 JavaScript 函数 Keys.onSpacePressed: { increment() } // 按下 Esc 键清空文本 Keys.onEscapePressed: { label.spacePresses = 0 text } // (3) 一个 JavaScript 函数 function increment() { spacePresses = spacePresses + 1 } }
QML 文档中可以定义 JavaScript 函数,语法同普通 JavaScript 函数一样。
QML 的绑定机制同 JavaScript 的赋值运算符有一定类似。它们都可以将后面的值赋值给前面。不同之处在于,绑定会在后面的值发生改变时,重新计算前面的值;但是赋值只是一次性的。
可视元素:Item、Rectangle、Text、Image和MouseArea。
Item是所有可视元素中最基本的一个。它是所有其它可视元素的父元素,可以说是所有其它可视元素都继承Item。Item本身没有任何绘制,它的作用是定义所有可视元素的通用属性:
分组 属性
几何: x和y用于定义元素左上角的坐标,width和height则定义了元素的范围。z定义了元素上下的层 叠关系。
布局: anchors(具有 left、right、top、bottom、vertical 和 horizontal center 等属性)用于定位元素相对于其它元素的margins的位置。
键盘处理: Key和KeyNavigation属性用于控制键盘;focus属性则用于启用键盘处理,也就是获取焦点。
变形: 提供scale和rotate变形以及更一般的针对 x、y、z 坐标值变换以及transformOrigin点的transform属性列表。
可视化: opacity属性用于控制透明度;visible属性用于控制显示/隐藏元素;clip属性用于剪切元素;smooth属性用于增强渲染质量。
状态定义: 提供一个由状态组成的列表states和当前状态state属性;同时还有一个transitions列表,用于设置状态切换时的动画效果。
Rectangle:
Rectangle{ width: root.width height: root.height gradient: Gradient{ GradientStop { position: 0.0; color: "red" } GradientStop { position: 0.33; color: "yellow" } GradientStop { position: 1.0; color: "green" } } border{ color: "blue" width: 4 } radius: 8 }
Text元素
horizontalAlignment和verticalAlignment属性指定对齐方式。
增强文本渲染,style和styleColor两个属性。这两个属性允许我们指定文本的显示样式和这些样式的颜色。
在文本使用 … ,elide属性。
文本自动换行,wrapMode
Text { width: 160 height: 120 text: "A very very long text" //文本末尾使用 … ,**elide属性** elide: Text.ElideRight //文本自动换行 wrapMode:Text.Wrap //设置行高 lineHeight:1 style: Text.Sunken styleColor: '#FF4444' verticalAlignment: Text.AlignTop font { pixelSize: 24 } }
wrapMode:Text.Wrap:
wrapMode:Text.WrapAnywhere
Image属性
Image { x: 112; y: 12 width: 48 height: 118/2 //本地路径(./images/home.png),也可以使网络路径(http://example.org/home.png) source: "image/file2.png" //fillMode设置改变大小的行文 Image.PreserveAspectCrop等比例切割 fillMode: Image.PreserveAspectCrop //同时设置clip属性,避免所要渲染的对象超出元素范围。 clip: true }
MouseArea:
不可见的矩形区域。通常,我们会将这个元素与一个可视元素结合起来使用,以便这个可视元素能够与用户交互。
Rectangle { id: rect1 x: 12; y: 12 width: 76; height: 96 color: "lightsteelblue" MouseArea { /* ~~ */ }}
图片旋转 事件:
Image { id: wheel anchors.centerIn: parent source: "qrc:/images/wheel.png" Behavior on rotation { //旋转事件 NumberAnimation{ duration: 5000 } } } MouseArea{ width: wheel.width height: wheel.height anchors.centerIn: parent onClicked: { wheel.rotation = 360 } }
- QML 和QtQuick2
- QML概念及框架--QML文件和QML组件
- QML图像、状态和动画--QML状态
- QML图像、状态和动画--QML动画
- Qt:QML:JavaScript 和QML 语法错误表
- QML动画和过度
- QML动画和过度
- QML属性和对象
- QML动画和过度
- QtQuick2实现媒体播放器(界面)
- QML学习:对象和属性
- QML和C++实现交互
- QML中的信号和函数
- QML之DelegateModel和DelegateModelGroup
- Qt Quick 和qml介绍
- C++和QML混合编程
- QML中的信号和函数
- qml和widget混合编程
- 编译busybox的笔记
- linux串口编程参数配置详解
- SVN Files 的值“ < < < < < < < .mine”无效。路径中具有非法字符。
- 【转】java对音频文件的频谱分析
- tcp协议完美博客网址
- QML 和QtQuick2
- Find the Difference
- Java IO流学习总结
- 前端性能优化----yahoo前端性能团队总结的35条黄金定律 20
- Spring事务管理——慕课网
- java--06--多线程(一)
- 正向代理与反向代理的区别
- 数据结构与算法分析笔记与总结(java实现)--二叉树笔记
- ubuntu 搭建git仓库