QML 语法(Syntax)
简介
QML(Qt Markup Language:Qt 标记语言)是一种描述用户界面的声明式语言。它将用户界面分解成一些更小的元素,这些元素能够结合成一个组件(Component)。QML语言描述了用户界面元素的形状和行为。用户界面能够使用JavaScript来提供修饰,或者增加更加复杂的逻辑。从这个角度来看它遵循HTML-JavaScript模式,但QML是被设计用来描述用户界面的,而不是文本文档。
从QML元素的层次结构来理解是最简单的学习方式。子元素从父元素上继承了坐标系统,它的x,y坐标总是相对于它的父元素坐标系统。
实例代码
下面是一个简单的qml文件:
import QtQuick 2.0//根元素是 Rectangle
Rectangle {//命名这个元素为:rootid: root;//属性:<属性名>:<属性值>width: view.width; height: view.height;color: "#d8d8d8";//声明一个内嵌的元素(root的子元素)Image {id : viewsource: 'image/view.jpg'}//另一个内嵌的元素Text {//未命名的元素//参照parentx: parent.width/2-width; y: 25;horizontalAlignment: Text.AlignHCenter;text: '风景图';color: "#fff";font.pixelSize: 35;}
}
解读代码
*import声明导入了一个指定的模块版本。一般来说会导入QtQuick2.0 来作为初始元素的引用。
*使用//可以单行注释,使用/**/可以多行注释,就像C/C++和JavaScript一样。
*每一个QML文件都需要一个根元素,就像HTML一样。
*一个元素使用它的类型声明。然后使用{}进行包含。
*元素拥有属性,他们按照name:value的格式来赋值。
*任何在qml文档中的元素都可以使用它们的id进行访问(id是一个任意地标识符)。
*元素可以嵌套,这意味着一个父元素可以拥有多个子元素。子元素可以通过访问parent关键字来访问它们的父元素。
好的编程习惯
在编写qml文件时,会经常使用id或者关键字parent来访问你的父对象。有一个比较好的方法是命名你的根元素对象id为root(id:root),这样就不用去思考你的qml文件中的根元素应该用什么方式命名了。
提示:我们可以通过Qt Creator编写建立工程来编写和运行编写好的qml文件,也可以在终端运行命令来执行qml文件,比如:
$ $QTDIR/bin/qmlscene rectangle.qml
将 $QTDIR 替换为你自己Qt的安装路径。qmlscene会执行Qt Quick运行环境初始化,并且解释这个qml文件。
Windows环境下,运行$QTDIR/bin/qmlscene rectangle.qml 和 $QTDIR/bin/qmlscene.exe rectangle.qml效果是一样的。
截图
QML 语法(Syntax)相关推荐
- 1.QML语法、属性和元素
QML是一种声明性语言,用于描述应用程序的用户界面.QML可以将用户界面分解,也可以将界面元素组合为组件. QML描述了这些用户界面元素的外观和行为. 支持JavaScript来丰富此用户界面描述,以 ...
- ShaderLab Syntax 基本语法
本文为个人从Unity文档翻译所得,如要转载请注明源博客地址:http://ymdzz.blog.51cto.com ShaderLab Syntax 基本语法 Unity里的所有的Shader文件都 ...
- 语言(Language)和语法(Syntax)简述
语言Language和语法Syntax简述 一字母表和字符串 二语法和语言 1几个基本概念 a语法Grammer b推导Derivation c归纳Reduction d语法规则的递归定义Recurs ...
- QML中文手册(持续更新...建议收藏)
最近学习QML,中间遇到了一些问题,难免要翻阅一些资料,当查看到官方文档时候,我的小脑袋,有点扛不住了,全是英文,所以这里我打算把我看到的,学习过程中接触到的文档都翻译成中文,有些是机翻,有些是人为. ...
- c语言标识符的文法表示,第三章文法和语法[lly]3.ppt
第三章文法和语法[lly]3 第3章文法和语言;1.语言;研究程序设计语言及研究的三个方面: 每个程序构成的规律(语法 Syntax)每个程序的含义(语义 Semantics)每个程序和使用者的关系( ...
- 计算机网络中的语法 语义 时序的概念,网络iso协议及语义语法时序详解
网络iso协议及语义语法时序详解 计算机学习 网络协议的三要素 在计算机网路中,通信发生在不同系统的实体之间,,实体(entity)是能够发送和接收信息的任何事物.然而,两个实体间仅发送比特流就指望能 ...
- Qt界面UI之QML初见(学习笔记四)
拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...
- python spss_SPSS语法调用Python,让spss插上翅膀
SPSS 具备强大的数据处理和分析功能,除了提供友好.灵活的 UI 操作界面外,Statistics 为其所有的功能设计了相应的命令,即 Statistics 的语法 Syntax.除此之外,Synt ...
- Nginx——nginx作为静态资源web服务(配置语法)
目录 一.sendfile的配置语法(即文件读取的配置语法) 二.tcp_nopush的配置语法(即高传输效率的配置语法) 三.tcp_nodelay的配置语法(即实时性的配置语法) 四.gzip的配 ...
- 【Qt5开发】Qt Quick/QML快速入门视频教程
learnqml 免费试看地址:https://jiaoyu.taobao.com/course/QKT_2081022 完整视频购买地址:https://item.taobao.com/item.h ...
最新文章
- python动态创建类_Python中通过参数动态创建扩展类(class)
- 请问如何更改dedecms“文件保存目录”的字符限制 ?
- Windows驱动开发-_驱动对象学习和内核处理字符串初步
- SqlServer基础之(触发器)
- 大数据 — Hadoop
- spark java 案例_Spark入门案例
- ajax内调用WCF服务
- oracle 前导列_Oracle数据库表和表列讲解
- Spring Framework 4.0相关计划公布---包括对于Java SE 8 和Groovy2的支持
- 微信网页扫码登录的实现
- mysql c盘满了 怎么办_C盘满了如何清理
- 1011 A+B 和 C (15分)(输出格式 数据类型范围)
- 【linux】容器之代码自动发布-docker
- 知乎搜索排序模型的演进
- Python渗透测试编程技术-拒绝服务攻击
- 口布杯花的60种叠法_杯花折叠方法
- 代码演示Mybatis-Generator 扩展自定义生成
- 支付宝Html授权,网页版的支付宝授权登录(vue+java)
- 马云质押阿里巴巴股票寻求贷款,要有大动作?旧闻新炒!
- 经典数学模型之——灰度预测模型
热门文章
- 解决64位虚拟机安装和键盘FN快捷键问题
- AppBarLayoutCoordinatorLayoutBehavior
- Temporal Abstraction
- 淘客联盟系统维护光盘2008新春大礼包
- C语言第零次作业总结
- 关于火车票12306
- python爬12306余票_Python 爬取12306火车票
- 绝知此事要躬行|fatal: not in a git directoryError: Command failed with exit 128: git
- openGL之API学习(七十八)SPIR-V
- 互联网背景下为什么会出现NoSQL?