QT开发(五十二)———QML语言

QT开发(五十二)———QML语言

QML是一种声明语言,用于描述程序界面。QML将用户界面分解成一块块小的元素,每一元素都由很多组件构成。QML定义了用户界面元素的外观和行为;更复杂的逻辑则可以结合JavaScript脚本实现。

一、QML基础语法

1、Import语句

QML代码中,import语句一般写在头几行,主要用途如下: 
    A、包含类型的全名空间
    B、包含QML代码文件的目录
    C、JavaScript代码文件

格式如下:

import Namespace VersionMajor.VersionMinor

import Namespace VersionMajor.VersionMinor as SingletonTypeIdentifier

import "directory"

import "file.js" as ScriptIdentifier

实例如下:

import QtQuick 2.0

import QtQuick.LocalStorage 2.0 as Database

import "../privateComponents"

import "somefile.js" as Script

2、对象声明

QML代码都定义一个对象树。所有的QtQuick元素都是继承于QQuickItem(QML中的Item类型),包括Rectangle、Text等。 对象类型以大写字母开头。
在定义对象的同时,对象的属性也会被赋初值。每个对象都可在其内部再声明子对象。每个对象的内容都由大括号包围。

Rectangle

{

width: 100

height: 100

color: "red"

}

等价于:Rectangle { width: 100; height: 100; color: "red" }

3、子对象

每个QML对象内可声明无限个子对象。

import QtQuick 2.0

Rectangle

{

width: 200

height: 200

color: "red"

Text

{

anchors.centerIn: parent

text: "Hello, QML!"

}

}

4、注释

QML的注释类似于C++、Java和Javasript等,有两种:

A、单行注释时使用双斜杠//

B、多行注释使用 /* … */

5、模块声明

QML每个类都单独存放一个文件,每个文件都是一个模块,但不能单独声明一个函数,函数必须写在类内,或者用Javascript代码。
    引用时以模块名使用。如果不考虑C++扩展的话,所有的QML代码都是使用已有的QML元素类型完成的。

6、表达式

表达式可以包含其它的对象与属性的引用,会建立约束关联。

Item

{

Text

{

id: text1

x:2;y:2

text: "Hello World"

}

Text

{

id: text2

x:2;y:20

text: text1.text

}

}

7、信号处理器

信号处理器允许响应事件时处理动作。例如,MouseArea元素有信号处理器来处理鼠标按下,释放以及单击。

MouseArea

{

acceptedButtons: Qt.LeftButton | Qt.RightButton

onPressed:

{

if (mouse.button == Qt.RightButton)

console.log("Right mouse button pressed")

}

}

时间: 2024-10-25 14:45:45

QT开发(五十二)———QML语言的相关文章

QT开发(十二)——QT事件处理机制

QT开发(十二)--QT事件处理机制 一.QT事件简介 QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发.QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. 常见的QT事件类型如下: 键盘事件: 按键按下和松开 鼠标事件: 鼠标移动,鼠标按键的按下和松开 拖放事件: 用鼠标进行拖放 滚轮事件: 鼠标滚轮滚动 绘屏事件: 重绘屏幕的某些部分 定时事件: 定时器到时 焦点事件: 键盘焦点移动 进入和离开事件: 鼠标移入widget之内,或是移出 移动事件: widget的

QT开发(十五)——QT坐标系统

QT开发(十五)--QT坐标系统 一.QT坐标系简介 Qt中每一个窗口都有一个坐标系,默认窗口左上角为坐标原点,然后水平向右依次增大,水平向左依次减小,垂直向下依次增大,垂直向上依次减小.原点即为(0,0)点,以像素为单位增减. 二.坐标系变换 坐标系变换是利用变换矩阵来进行的, 通常利用QTransform类来设置变换矩阵.QPainter类提供了对坐标系的平移,缩放,旋转,扭曲等变换函数. void translate(const QPointF & offset) void transla

Go语言开发(十二)、Go语言常用标准库二

Go语言开发(十二).Go语言常用标准库二 一.os 1.os简介 os 包提供了不依赖平台的操作系统函数接口,设计像Unix风格,但错误处理是go风格,当os包使用时,如果失败后返回错误类型而不是错误数量. 2.os常用接口 func Hostname() (name string, err error) // Hostname返回内核提供的主机名 func Environ() []string // Environ返回表示环境变量的格式为"key=value"的字符串的切片拷贝 f

【COCOS2DX-LUA 脚本开发之十二】Hybrid模式-利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)

转载自:http://www.himigame.com/iphone-cocos2dx/1354.html 首先说明一个问题: 为什么要在线更新资源和脚本文件!? 对于此问题,那要说的太多了,简单概括,如果你的项目已经在google play 或Apple Store 等平台上架了,那么当你项目需要做一些活动或者修改前端的一些代码等那么你需要重新提交一个新版本给平台,这时候你的上架时候是个不确定的时候,具体什么时候能上架,主要跟平台有关,你再着急,也没有用的. 那么如果你的项目是使用脚本语言进行

QT开发(十九)——QT内存泄漏问题

QT开发(十九)--QT内存泄漏问题 一.QT对象间的父子关系 QT最基础和核心的类是:QObject,QObject内部有一个list,会保存children,还有一个指针保存parent,当自己析构时,会自己从parent列表中删除并且析构所有的children. QT对象之间可以存在父子关系,每一个对象都可以保存它所有子对象的指针,每一个对象都有一个指向其父对象的指针. 当指定QT对象的父对象时,父对象会在子对象链表中加入该对象的指针,该对象会保存指向其父对象的指针. 当QT对象被销毁时,

QT开发(十六)——QT绘图实例-钟表

QT开发(十六)--QT绘图实例-钟表 一.钟表实现原理 钟表的实现需要设置定时器,定时器每隔一秒发送timeout()信号到QWidget::update()槽函数,update()槽函数将会重绘一次窗口,重写重绘事件函数paintEvent(QPaintEvent *event),根据获取的当前系统时间的时钟.分钟.秒钟重绘钟表的时针.分针.秒针. QTimer *timer = new QTimer(this); timer->start(1000);//一秒钟 connect(timer

微信公众平台开发(十二) 发送客服消息

原文:微信公众平台开发(十二) 发送客服消息 一.简介 当用户主动发消息给公众号的时候(包括发送信息.点击自定义菜单.订阅事件.扫描二维码事件.支付成功事件.用户维权),微信将会把消息数据推送给开发者,开发者在一段时间内(目前修改为48小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息给普通用户,在48小时内不限制发送次数.此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务. 二.思路分析 官方文档中只提供了一个发送客服消息的接口,开发者只要POS

QT开发(十四)——QT绘图系统

QT开发(十四)--QT绘图系统 一.QT绘图原理 Qt4中的2D绘图系统称为Arthur绘图系统,可以使用相同的API在屏幕上和绘图设备上进行绘制,主要基于QPainter.QPainterDevice和 QPainterEngine.QPainter执行绘图操作,QPainterDevice提供绘图设备,是一个二维空间的抽象,QPainterEngine提供一些接口.QPainter用来执行具体的绘图相关操作,如画点,画线,填充,变换,alpha通道等.QPaintDevice类是能够进行绘

从零开始学ios开发(十二):Table Views(中)UITableViewCell定制

我们继续学习Table View的内容,这次主要是针对UITableViewCell,在前一篇的例子中我们已经使用过UITableViewCell,一个默认的UITableViewCell包含imageView.textLabel.detailTextLabel等属性,但是很多时候这些默认的属性并不能满足需要,其实更多的时候我们想自己制定UITableViewCell的内容,这篇学习的就是制定自己的UITableViewCell. UITableViewCell继承自UIView,因此它可以加载