QML基础——基本语法

QML教程(一)基础语法 QML教程 阅读详情

QML 的基本语法
QML看起来像这样

复制代码
import Qt 4.7

 Rectangle {
     width: 200
     height: 200
     color: "blue"

     Image {
         source: "pics/logo.png"
         anchors.centerIn: parent
     }
 }
复制代码

对象是通过类型而直接被指定的,紧随其后的是一对大括号。对象类型总是以大写字母开头。在上面的例子中,存在两个对象Rectangle和Image。在大括号之间,我们可以指定对象的相关信息,例如它的属性。属性是通过“property: value”这样的方式被呈现的。在上面的例子中,我们可以看到Image拥有一个属性叫做source,它被分配了一个值叫做"pics/logo.png"。属性和值被冒号分隔。

属性可以被一行行指定:

Rectangle {
     width: 100
     height: 100
 }

或单行输写多个属性:

Rectangle { width: 100; height: 100 }

当单行输写多属性/值时,必须由分号来分隔开来。

Import语句导入Qt模块,它包含所有标准的QML元素。如果没有Import语句;那么Rectangle与Image元素将无效。

表达式

除了赋值属性外;你也可以用JavaScript编写的表达式来指定。

Rotation {
     angle: 360 * 3
 }

这些表达式可以包含其它的对象与属性的引用,在这种情况下就会建立约束关联:当该表达式改变值时;该属性值将自动更新。

复制代码
Item {
     Text {
         id: text1
         text: "Hello World"
     }
     Text {
         id: text2
         text: text1.text
     }
 }
复制代码

在上面的示例中,text2对象将显示与text1相同的文本。如果text1改变值;那么text2也将自动更新为相同的值。

注意这里我们通过使用id值引用其它的对象。(详情请参见id属性信息)

QML注释

在QML中的注释类似于JavaScript。

单选注释以 // 开始。

多行注释以 /* 开始,以 */ 结束。

import Qt 4.7

注释是不被执行的,添加注释可对代码进行解释或者提高其可读性。

注释同样还可用于防止代码执行,这对跟踪问题是非常有用的。

Text {
     text: "Hello world!"
     //opacity: 0.5
 }

在上面的示例中,这个Text对象将正常显示,一旦opacity: 0.5这行关掉注释,这是以半透明方式显示文本。

属性
属性命名

属性命名以首字母为小字(附加属性除外)。

属性类型

QML支持许多类型的属性(参阅QML基本类型)。基本类型包括整型、实数型、布尔、字符串、颜色以及列表。

Item {
     x: 10.5             // a 'real' property
     ...
     state: "details"    // a 'string' property
     focus: true         // a 'bool' property
 }

QML属性是有类型安全检测的。也就是说,它们只允许你指定一个与属性类型相匹配的值。例如,项目x属性类型是实数,如果你赋值一个字符串;那么将会得到错误的信息。

Item {
    x: “hello” // illegal!
}
id属性

每个对象可给予一个特定唯一的属性称之为id。在同一个QML文件中不可能拥有与其它对象同名的id值。指定一个id可以允许该对象可以被其它的对象与脚本引用。

下面的示例中,第一个矩形元素的id名为”myRect”。第二个矩形元素的宽度是引用的myRect.widtch,这意味着它将与第一矩形具有相同的width值。

复制代码
Item {
     Rectangle {
         id: myRect
         width: 100
         height: 100
     }
     Rectangle {
         width: myRect.width
         height: 200
     }
 }
复制代码

请注意,一个id首字符必须是小写字母或下划线并且不能包含字母,数字和下划线以外的字符。

列表属性

列表属性类似于下面这样:

Item {
     children: [
         Image {},
         Text {}
     ]
 }

列表是包含在方括号内,以逗号分隔的列表元素。在你只分配单一项目列表的情况下,是可以省略方括号:

Image {
     children: Rectangle {}
 }
默认属性

每个对象类型可以指定列表或对象属性之一作为其默认属性。如果一属性已被声明为默认属性,该属性标记可以被省略。例如该代码:

State {
     changes: [
         PropertyChanges {},
         PropertyChanges {}
     ]
 }

可以简化成这样:

State {
         PropertyChanges {},
         PropertyChanges {}
 }

因为changes是State类型的默认属性。

分组属性

在某些情况下使用一个‘.’符号或分组符号形成一个逻辑组。

分组属性可写以下这样:

Text {
     font.pixelSize: 12
     font.bold: true
 }

或者这样:

Text {
     font { pixelSize: 12; bold: true }
 }

在元素文件分组属性使用‘.‘符号显示。

附加属性

有些对象的属性附加到另一个对象。附加属性的形式为Type.property其中Type是附加property元素的类型。

例如:

复制代码
Component {
     id: myDelegate
     Text {
         text: "Hello"
         color: ListView.isCurrentItem ? "red" : "blue"
     }
 }
 ListView {
     delegate: myDelegate
 }
复制代码

ListView元素附加ListView.isCurrentItem属性到每个它创建的代理上。

另一个附加属性的例子就是Keys元素,它用于处理任意可视项目上的按键,例如:

Item {
     focus: true
     Keys.onSelectPressed: console.log("Selected")
 }
信号处理器

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

MouseArea {
     onPressed: console.log("mouse button pressed")
 }

所有信号处理器开始都是启用的。

有一些信号处理器包含一个可选的参数,例如MouseArea onPressed信号处理程序有鼠标参数:

 MouseArea {
     acceptedButtons: Qt.LeftButton | Qt.RightButton
     onPressed: if (mouse.button == Qt.RightButton) console.log("Right mouse button pressed")
 }
第63篇 QML 之 JS中的代码块、条件语句 前面章节讲的的运算符可以去理解为单个执行语句。代码块是在 {} 中写的语句,将多条语句视为集合来使用。 阅读详情

相关推荐

最好的 QML 教程,让你的代码飞起来!

想必大家都知道,亮哥一直深耕于 优快云,坚持了好很多年,目前为止,原创已经 500 多篇了,一路走来相当不易。

青春不老,奋斗不止! 1万+

qml基础使用教程

qml使用,基础知识点总结

weixin_45551020的博客 6606

QML基本元素和属性

任何知识,都有自己的体系架构,掌握了体系架构,按图索骥的去学习的效率要远高于漫无目的的学习。这里我参照QML的知识框架和一些问题来对QML进行系统的总结。问题列表如下: 1.QML是什么? 2.为什么使用QML? 3.QML的基本语法? 4.QML的元素都有哪些? 1.QML是什么? QML是Qt推出的Qt Quick技术的一部分,是一种用于描述用户界面的类似html的声明式语言。它将用户界面分解成一些更小的元素,这些元素能够结合成一个组件。这点类似于json结构,每个对象既有自己的行为和属性同

yang1fei2的博客 9571

QtQuick基础教程(二)---QML基本语法

QML语言特性QML的语法效法CSS,是一种声明式语言(Declarative Code),属性定义及关系直接写在定义体中,编写效率极高。 QML源代码一般由QML引擎从单独的QML代码文件中读取。Import语句QML代码中,import语句一般写在头几行。可以是以下几种之一: - 包含类型的全名空间 - 包含QML代码文件的目录 - Javascript代码文件 格式如下:import

LaineGates的专栏 1万+

ISP——坏点矫正(Defective Pixel Correction,DPC)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、出现原因二、坏点分类三、矫正方法动态矫正1.PINTO算法2.梯度法3.DPC和demosaic结合法4.行检测法 一、出现原因 1.感光元件芯片自身工艺技术瑕疵造成以及长期使用造成的瑕疵; 2.光线采集存在缺陷; 二、坏点分类 1.hot pixel: 固定保持较高的像素值,一般呈现为画面高亮的点; 2.dead pixel: 固定保持较低的像素值,一般在画面中呈现为暗点; 3.noise pixel:信号强度随光照呈现的.

qq_41939460的博客 9422

RV1126B RV1126B-P 瑞芯微 高性能视觉处理器SoC 芯片

它集成了大量算法加速器,如 HDR、3A、LSC、3DNR、2DNR、锐化、去雾、鱼眼校正、伽马校正、特征点检测等。此外,还配备了一款最多8兆像素的 AI-ISP,作为对传统ISP 的补充,以提供卓越的空间去噪性能和增强的图像增强效果。除了先前的高性能多媒体区块外,RV1126B还包含丰富的音频、内存和其他外围接口,如I2C、SPI、PWM等。借助这-特性,来自相机的视频可以以高分辨率进行编码,并存储在本地内存中,同时还能将另-段较低分辨率的视频传输到云存储。

szhorsway的博客 1856

第二节 QML基础知识:语法、基本元素与属性绑定

当属性值是一个JS 表达式(而非字面量)时,QML 引擎会记录表达式引用的所有属性,任何一个被引用属性变化时,表达式都会重新求值width: 400;height: 50radius: 25x: parent.width / 2 - width / 2 // 引用了 parent.width 和自身 width当 parent.width 变化时,x 自动重算 → 圆点始终居中。不需要任何手动刷新代码。

ITOfDragon的博客 192

vivado 编译ADI AD9361 TCL脚本生成hdl工程

(4)输入"source ../../scripts/adi_make.tcl"命令(仅双引号内部命令,不包含双引号),个人理解:该命令用来加载当前所需要编译工程所需要各功能模块的信息,因为每个工程需要不同的功能模块,比如有的需要gpio模块,有的不需要gpio模块,这些模块上前面路径的library也同样以TCL脚本形式存在,当有需要时才进行编译,怎么知道当前工程需要什么模块呢就是通过"source ../../scripts/adi_make.tcl"(仅双引号内部命令,不包含双引号)命令实现。

weixin_40586423的博客 807

qml之基础语法

问题是,当焦点转移到input2元素时,TlineEditV1内的顶级项接收到焦点,并且没有将焦点转发到TextInput。Item是所有视觉元素的基础元素,因此所有其他视觉元素都从Item继承。4、可以使用property限定符向元素添加新属性,后跟类型、名称和可选的初始值(property<类型><名称>:<值>)。例如,要移动和缩放一个正方形,我们可以使用上、下、左和右键来平移元素,使用加号和减号键来缩放元素。2、对于单行注释,可以使用//,对于多行注释,可以通过/* */进行注释。

一个小菜鸡的学习之路 1268

用化学方法nmp溶剂从佳能cmos传感器上剥离拜耳矩阵和微透镜

将光刻胶暴露于 NMP 溶剂中 10-15 分钟,并进行轻微的机械搅拌,将溶解的光刻胶从基材表面带走,即可去除大部分光刻胶,之后再进行第二次溶剂浴,以洗去微量含有光刻胶的溶剂。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。我还担心传感器的校准问题,我觉得可以大致解决这个问题,比如在安装面上用刻度尺标记三个螺丝的位置,然后数着拧出螺丝的圈数,直到听到“咔哒”声(螺纹完全拧出)。在我看来,这是必读的;

qq_40247880的博客 1473

【人工智能AI】是什么?

人工智能(Artificial Intelligence),英文缩写为AI。它是研究、开发用于模拟延伸和扩展人的智能的理论方法技术及应用系统的一门新的技术科学。(百度百科)人工智能的基本原理:机器从「特定的」大量数据中总结规律,形成某些「特定的知识」,然后将这种「知识」应用到现实场景中去解决实际问题。在这个基本原理的基础上,有3个特征:1、人工智能本质上是一种工具2、人工智能技能只能解决特定的问题,而不是什么都能做3、人工智能属于归纳逻辑,可以告诉你是什么,但是不能告诉你为什么。

KJCZ.AK的博客 2万+

QML 语言基础

在《Qt on Android:Qt Quick 简介》中我们提到 QML 语法和 Json 类似,请参考《Qt on Android: http下载与Json解析》查看 Json 语法。当然这里我们是期望从零开始也能学会 QML ,所以呢,你也可以直接往下看。

安晓辉生涯——聚焦程序员的职业规划与成长 4万+

Python3.11安装fairseq避坑指南:解决dataclasses兼容性问题(附详细代码修改)

本文详细解析了在Python 3.11环境下安装Fairseq时因dataclasses模块规则变更导致的安装失败问题。通过定位核心配置文件,将`default=SomeConfig()`修改为`default_factory=SomeConfig`,并调整依赖版本,提供了从源码修改到环境验证的完整解决方案,确保Fairseq顺利运行。

weixin_29098367的博客 494

【Qt之Quick模块】6. QML语法详解_1 基础语法与三种导入语句

【Qt之Quick模块】6. QML语法详解_1 基础语法与三种导入语句

FreeLikeTheWind的博客 2404

基于 Qt 的轻量化工业组态软件设计与实现

本文设计并实现了一种基于Qt框架的轻量化工业组态软件,解决了传统组态软件体积庞大、部署复杂等问题。该软件采用模块化架构,集成可视化图形编辑、设备数据采集、脚本扩展等核心功能,具有跨平台运行、资源占用低、启动速度快等特点。通过关键技术优化,实现了高效稳定的数据采集、脚本控制和网络通信,可广泛应用于工业机器人HMI、小型PLC监控等轻量化场景。测试结果表明,该软件体积约30MB,运行内存占用60-80MB,启动时间1.2秒,满足工业轻量化监控需求。未来可扩展更多工业组件和协议支持,进一步提升应用价值。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 140

STM32 USB键盘实现指南

在STM32上实现键盘功能可以通过USB HID(人机接口设备)协议来实现,使STM32设备能被计算机识别为标准键盘。通过上述步骤,您可以在STM32上实现一个功能完整的USB键盘。关键点包括:正确配置USB HID设备实现键盘矩阵扫描处理按键事件并生成HID报告优化按键响应和消抖处理添加额外功能如宏键和LED反馈这个实现可以作为基础,进一步扩展为游戏键盘、宏键盘或特殊输入设备。

suny8的专栏 968

01.qml基础语法

一、基础语法 每一个QML文件都需要一个根元素 一个元素使用它的类型声明,然后使用{}进行包含 元素拥有属性,他们按照name:value的格式来赋值 任何在QML文档中的元素都可以使用他们的id进行访问(建议根元素id为root) 元素可以嵌套,这意味着一个父元素可以拥有多个子元素。子元素可以通过访问parent关键字访问他们的父元素 二、属性语法 id是一个非常特殊...

darkGer的博客 264

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【Qt Quick】零基础入门系列之QML语法(二)

程序打包 静态库和动态库区别 静态库是和编译程序一起的。动态库是动态链接的。 Qt应用程序由可执行文件exe、动态库dll和so,通常是Qt的第三方库和模块、图片,翻译文件和文档。 打包软件

科技匠心的博客 645

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

qml基本语法

QML是什么? QML 是一中声明式语言,用来描述应用程序接口的――是什么样,有怎样的行为。在QML中,一个用户接口被指定为带有属性的对象是。 这个介绍主要面向只有很少或者没有编码经验的人。在QML中,JavaScript作为一种脚本语言被使用。因此在深入学习QML之前,也许你会想要去学一些关于JavaScript的知识(JavaScript: The Definitive Guide

WALNUT的博客 1603

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

QML基础 1 --结构、语法、元素等

QML基础 1 QML文档构成 QML程序的源文件又叫“QML文档”,以“.qml”为文件名后缀,每个QML文档都由两部分构成: import和对象声明。 import部分 此部分导入需要使用的 Qt Quick库,这些库由Qt5提供,包含了用户界面最通用的类和 ,如本程序main.qml文件开头的两句: import QtQuick 2.12 //导入 QT Quick2.12库 import QtQuick.Controls 2.5 //提供了多种组件 导入这些库后,用户就可以在自己编写的程序中访

qq_42259389的博客 1042

QML编程知识——基础语法知识

QML的语法类似于HTML,但更加灵活和强大。它结合了HTML的标记风格和JavaScript的脚本功能,使得开发者能够同时定义UI结构和编写逻辑代码。QML文档是QML代码的独立文件,用于定义QML对象类型,这些类型可以在整个应用程序中重用。除了内置属性外,QML还允许开发者通过propertywidth: 100别名属性width: 100五、注释QML中的注释语法与C++相同,单行注释以//开始,多行注释以/*开始并以*/结束。注释对于解释代码逻辑、临时禁用代码段等非常有用。

J^T的博客 2415
上一篇: QML基础——初识Qt Quick Designer
下一篇: QML基础——QML国际化(中文示例)
獠
獠
博客等级 码龄16年 43粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值