QML基本“.NET研究”语法

简介:   QML是什么?QML 是一中声明式语言,用来描述应用程序接口的――是什么样,有怎样的行为。在QML中,一个用户接口被指定为带有属性的对象是。这个介绍主要面向只有很少或者没有编码经验的人。在QML中,JavaScript作为一种脚本语言被使用。

  QML是什么?

QML 是一中声明式语言,用来描述应用程序接口的――是什么样,有怎样的行为。在QML中,一个用户接口被指定为带有属性的对象是。

这个介绍主要面向只有很少或者没有编码经验的人。在QML中,JavaScript作为一种脚本语言被使用。因此在深入学习QML之前,也许你会想要去学一些关于JavaScript的知识(JavaScript: The Definitive Guide)。另外,对像HTML和CSS这样的网页技术有一些基础的了解也是相当有帮助的,但这些都不是必须的。

上海企业网站设计与制作p>   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 }

当多个property/value对被指定在一个单行上时,他们需要通过分号来分隔。

import声明是为了导入包含所有标准的QML元素的Qt模块。没有这个导入声明,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 值,来进行引用。

  QML注释

QML中的注释方式和Javascript 的相同。

单行注释使用//;

多行注释使用 /* … */ 。

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

  属性
  属性命名

属性通常以小写字符开头(附加属性除外)

  属性类型

QML支持多种属性(具体参看QML Basic Types)。基本的属性包括 int, real, bool, string, color和lists。

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

  QML的属性是属于类型安全的,也就是说属性的类型必须和所分配的值是相同的。例如,Item的x属性是一个real,如果你想要给他分配一个string值,就会得到一个错误。

 

 Item {
x: "hello" // illegal!
}

  id属性

每个对象都可以指定一个专门的属性叫做id,这个属性的值必须是唯一的。在同一个QML文档中不能有相同的id值。通过指定一个唯一可用的id,对象就可以被其他对象和脚本引用。

 Item {
Rectangle {
id: myRect
width: 100
height: 100
}
Rectangle {
width: myRect.width
height: 200
}
}

ps:id必须以小写字母或者下划线开头,并且不能包含除字母、数字和下划线以外的其他字符。

  List属性

List属性看起来像这样

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

  缺省属性

每个对象类型可以指定一个list或者或者对象属性作为缺省属性。如果一个属性已经被声明为缺省属性,那么该属性的标签就可以被省略。

  示例代码

 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是这个附加属性元素的类型。

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

ListView元素附加ListView.isCurrentItem这个属性到它创建的每一个对象中。

另一个附加属性的例子是Keys元素通过附加属性来处理任何可见Item的key press事件,例如:

 Item {
focus: true
Keys.onSelectPressed: console.log("Selected")
}

  信号处理器

信号处理器允许通过事件来响应动作。举个例子来说,MouseArea元素拥有信号处理器来处理鼠标press、release和click:

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

所有的信号处理器都是以“on”开头的。上海网站建设/p>

一些信号处理器还包含有选项参数,例如MouseArea onPressed这个信号处理器就有mouse这个参数:

 MouseArea {
acceptedButtons: Qt.LeftButton | Qt.RightButton
onPressed: if (mouse.button == Qt.RightButton) console.log("Right mouse button pressed")
}
目录
相关文章
|
7月前
【易懂讲解】VB.NET 基础语法,让你快速掌握
【易懂讲解】VB.NET 基础语法,让你快速掌握
106 0
|
4月前
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
分享一份 .NET Core 简单的自带日志系统配置,平时做一些测试或个人代码研究,用它就可以了
|
6月前
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
177 0
|
7月前
|
机器学习/深度学习 算法 数据可视化
MATLAB基于深度学习U-net神经网络模型的能谱CT的基物质分解技术研究
MATLAB基于深度学习U-net神经网络模型的能谱CT的基物质分解技术研究
|
7月前
|
开发框架 安全 .NET
C# .NET面试系列一:基础语法
<h2>基础语法 #### 1. 字符串中 string str = null 和 string str = "" 和 string str = string.Empty 的区别? string str=null: ```c# 这表示字符串变量str被初始化为null,即它不引用任何对象。这与空字符串是不同的,因为空字符串是一个具有零长度的字符串对象,不会分配内存空间 ``` string.Empty: ```c# 这表示字符串变量str被初始化为空字符串,即一个具有零长度的字符串对象。这与null是不同的,因为str引用了一个空字符串对象 ``` string str="" :
131 1
|
7月前
|
程序员 数据库
VB.NET—Bug调试(参数话查询、附近语法错误)
VB.NET—Bug调试(参数话查询、附近语法错误)
69 0
|
机器学习/深度学习 数据采集 存储
【3-D深度学习:肺肿瘤分割】创建和训练 V-Net 神经网络,并从 3D 医学图像中对肺肿瘤进行语义分割研究(Matlab代码实现)
【3-D深度学习:肺肿瘤分割】创建和训练 V-Net 神经网络,并从 3D 医学图像中对肺肿瘤进行语义分割研究(Matlab代码实现)
274 0
|
开发框架 前端开发 .NET
ASP.NET Core MVC 从入门到精通之Razor语法
ASP.NET Core MVC 从入门到精通之Razor语法
186 0
|
SQL 开发框架 JSON
【.NET基础】Linq常用语法代码演示
前言:前言不重要,linq入门常用的语法,linq语法可以用来写操作集合、数据库表集合等等几乎所有集合类型的操作。下面就写几个案例(以List集合来做的),看代码和运行结果即可。
130 0
【.NET基础】Linq常用语法代码演示