QtQuick-QML语法

前言

QML是一种专门用于构建用户界面的编程语言,它允许与开发人员和设计者构建高性能的、具有流畅动画特效的可视化应用程序。

QML文档是高度可读的、声明式的文档,具有类似JSON的语法,支持使用JavaScript表达式,具有动态属性绑定等特性。

Qt 6 中通过导入Qt QML模块来使用QML语言,它定义并实现了QML语言及其解释引擎的基础构件,提供了供开发人员进行扩展的接口,以及将QML代码、JavaScript和C++集成在一起的接口。Qt QML模块既提供了QML接口,又提供了C++接口。

可以在Qt帮助中索引The QML Reference关键字,查看对应的帮助文档。

2.1QML语法基础

QML的代码一般是这样的:

import QtQuick

Rectangle{
	id: root
	width: 400
	height: 400
	color: "blue"
	Image{
		source: "pics/logo.png"
		anchors.centerIn: parent
	}
}
  1. 导入语句(import)
    • 代码中的import语句导入了QtQuick模块,它包含了各种QML类型。如果不使用这个模块,下面的Rectangle和Image类型就无法使用。
  2. 对象(object)和属性(property)
    • QML文档就是一个QML对象树。这段代码中创建了两个对象,分别是Rectangle根对象及其子对象Image。
    • QML对象通过对象声明(Object Declarations)来定义,对象声明由其类型(type)的名称和一对大括号组成,括号中包含了对象的特性定义,比如这个对象的id、属性值等,还可以使用嵌套对象声明的方式来声明子对象。

需要注意的是Rectangle是一个对象类型。在QML中一旦使用了Rectangle,代码中的Rectangle便称为对象,它是对象类型的一个实例。

一般对象都会指定具体的属性值,如矩形要设置宽、高、颜色等,所以这里Rectagle对象定义了width、height和color等属性。

属性通过attribute:value的形式进行初始化。

当多个属性写在一行时,必须用分号分隔:

Rectangle{ id:rect; width:100; height:100 }
  1. 布局

    • Image的anchors.centerIn起到了布局的作用,它会使Image处于一个对象的中心位置,比如这里就是处于其父对象Rectangle的中心。除了anchors, QML还提供了许多其他布局方式。
  2. 表达式和属性绑定

  • JavaScript表达式可以用于设置属性的值,例如:
    Item{
    	width: 100 * 3
    	height: 50 + 22
    }
    
    这些表达式可以包含其他对象或属性的引用,这样做便创建了一个绑定:当表达式的值改变时,以该表达式为值的属性会自动更新为新的值。
    例如:
    Item{
    	width: 300
    	height: 300
    	
    	Rectangle{
    		width: parent.width - 50
    		height: 100
    		color: "yellow"
    	}
    }
    
    当父对象的width发生改变时,Rectangle的width就会自动更新。
  1. 调试输出
    • 调试输出可以用console.log()console.debug()
    • 例如:
    Rectangle{
    	width: 200
    	height: 200
    	color: "blue"
    	MouseArea{
    		anchors.fill: parent
    		onClicked: console.log("矩形的颜色:", parent.color)
    	}
    }
    

2. import语句

import语句还有多种用法,包括指定导入版本、取别名、导入远程文档、导入目录等。

1. 模块(明明空间)导入语句

import <ModuleIndentifier> [<Version.Number>] [as <Qualifier>]
  • <ModuleIdentifier>
    • 使用点分割的URI标识符,该标识符能唯一确定模块的对象类型命名空间。
  • <Version.Number>
    • “主版本号.子版本号”。也可以省略子版本号,这样会导入主版本的最新子版本。
  • <Qualifier>
    • 限定命名空间。

相关推荐

  1. QtQuick-QML语法

    2024-07-21 22:04:06       17 阅读
  2. QML语法基础一

    2024-07-21 22:04:06       25 阅读
  3. QML进阶(十七) ECMAScript 语法介绍

    2024-07-21 22:04:06       24 阅读
  4. 【Qt之Quick模块】4. QML语法格式及命名规范

    2024-07-21 22:04:06       41 阅读
  5. 【Qt之Quick模块】6. QML语法详解_2类型系统

    2024-07-21 22:04:06       50 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 22:04:06       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 22:04:06       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 22:04:06       45 阅读
  4. Python语言-面向对象

    2024-07-21 22:04:06       55 阅读

热门阅读

  1. Codeforces Round 960 (Div. 2)VP

    2024-07-21 22:04:06       20 阅读
  2. WebAssembly在前端开发中的创新与应用

    2024-07-21 22:04:06       16 阅读
  3. easyExcel

    easyExcel

    2024-07-21 22:04:06      16 阅读
  4. 什么是等保测评

    2024-07-21 22:04:06       16 阅读
  5. acml可用订阅到起始位姿

    2024-07-21 22:04:06       18 阅读
  6. Windows 12 网页版

    2024-07-21 22:04:06       17 阅读
  7. 网络融合的艺术:Xcode中应用Web服务集成全指南

    2024-07-21 22:04:06       18 阅读
  8. 提示工程的技术与策略分类

    2024-07-21 22:04:06       16 阅读
  9. css font 优化

    2024-07-21 22:04:06       15 阅读
  10. 基于深度学习的金融交易

    2024-07-21 22:04:06       19 阅读
  11. MATLAB中balance函数用法

    2024-07-21 22:04:06       20 阅读
  12. 栈和队列之间有哪些区别

    2024-07-21 22:04:06       16 阅读
  13. python 爬虫技术 第04节 函数和模块

    2024-07-21 22:04:06       16 阅读
  14. 打造安全堡垒:Xcode应用权限管理全解析

    2024-07-21 22:04:06       14 阅读
  15. MSPM0G3507——K210和M0通信(K210给M0发数据)

    2024-07-21 22:04:06       16 阅读