简介

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效果是一样的。

截图

运行qmlscene命令:
运行结果截图:

QML 语法(Syntax)相关推荐

  1. 1.QML语法、属性和元素

    QML是一种声明性语言,用于描述应用程序的用户界面.QML可以将用户界面分解,也可以将界面元素组合为组件. QML描述了这些用户界面元素的外观和行为. 支持JavaScript来丰富此用户界面描述,以 ...

  2. ShaderLab Syntax 基本语法

    本文为个人从Unity文档翻译所得,如要转载请注明源博客地址:http://ymdzz.blog.51cto.com ShaderLab Syntax 基本语法 Unity里的所有的Shader文件都 ...

  3. 语言(Language)和语法(Syntax)简述

    语言Language和语法Syntax简述 一字母表和字符串 二语法和语言 1几个基本概念 a语法Grammer b推导Derivation c归纳Reduction d语法规则的递归定义Recurs ...

  4. QML中文手册(持续更新...建议收藏)

    最近学习QML,中间遇到了一些问题,难免要翻阅一些资料,当查看到官方文档时候,我的小脑袋,有点扛不住了,全是英文,所以这里我打算把我看到的,学习过程中接触到的文档都翻译成中文,有些是机翻,有些是人为. ...

  5. c语言标识符的文法表示,第三章文法和语法[lly]3.ppt

    第三章文法和语法[lly]3 第3章文法和语言;1.语言;研究程序设计语言及研究的三个方面: 每个程序构成的规律(语法 Syntax)每个程序的含义(语义 Semantics)每个程序和使用者的关系( ...

  6. 计算机网络中的语法 语义 时序的概念,网络iso协议及语义语法时序详解

    网络iso协议及语义语法时序详解 计算机学习 网络协议的三要素 在计算机网路中,通信发生在不同系统的实体之间,,实体(entity)是能够发送和接收信息的任何事物.然而,两个实体间仅发送比特流就指望能 ...

  7. Qt界面UI之QML初见(学习笔记四)

    拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...

  8. python spss_SPSS语法调用Python,让spss插上翅膀

    SPSS 具备强大的数据处理和分析功能,除了提供友好.灵活的 UI 操作界面外,Statistics 为其所有的功能设计了相应的命令,即 Statistics 的语法 Syntax.除此之外,Synt ...

  9. Nginx——nginx作为静态资源web服务(配置语法)

    目录 一.sendfile的配置语法(即文件读取的配置语法) 二.tcp_nopush的配置语法(即高传输效率的配置语法) 三.tcp_nodelay的配置语法(即实时性的配置语法) 四.gzip的配 ...

  10. 【Qt5开发】Qt Quick/QML快速入门视频教程

    learnqml 免费试看地址:https://jiaoyu.taobao.com/course/QKT_2081022 完整视频购买地址:https://item.taobao.com/item.h ...

最新文章

  1. python动态创建类_Python中通过参数动态创建扩展类(class)
  2. 请问如何更改dedecms“文件保存目录”的字符限制 ?
  3. Windows驱动开发-_驱动对象学习和内核处理字符串初步
  4. SqlServer基础之(触发器)
  5. 大数据 — Hadoop
  6. spark java 案例_Spark入门案例
  7. ajax内调用WCF服务
  8. oracle 前导列_Oracle数据库表和表列讲解
  9. Spring Framework 4.0相关计划公布---包括对于Java SE 8 和Groovy2的支持
  10. 微信网页扫码登录的实现
  11. mysql c盘满了 怎么办_C盘满了如何清理
  12. 1011 A+B 和 C (15分)(输出格式 数据类型范围)
  13. 【linux】容器之代码自动发布-docker
  14. 知乎搜索排序模型的演进
  15. Python渗透测试编程技术-拒绝服务攻击
  16. 口布杯花的60种叠法_杯花折叠方法
  17. 代码演示Mybatis-Generator 扩展自定义生成
  18. 支付宝Html授权,网页版的支付宝授权登录(vue+java)
  19. 马云质押阿里巴巴股票寻求贷款,要有大动作?旧闻新炒!
  20. 经典数学模型之——灰度预测模型

热门文章

  1. 解决64位虚拟机安装和键盘FN快捷键问题
  2. AppBarLayoutCoordinatorLayoutBehavior
  3. Temporal Abstraction
  4. 淘客联盟系统维护光盘2008新春大礼包
  5. C语言第零次作业总结
  6. 关于火车票12306
  7. python爬12306余票_Python 爬取12306火车票
  8. 绝知此事要躬行|fatal: not in a git directoryError: Command failed with exit 128: git
  9. openGL之API学习(七十八)SPIR-V
  10. 互联网背景下为什么会出现NoSQL?