QML对象声明

QML对象特性一般使用下面的顺序进行构造:

  • id
  • 属性声明
  • 信号声明
  • JavaScript函数
  • 对象属性
  • 子对象
  • 状态
  • 状态切换

为了获取更好的可读性,建议在不同部分之间添加一个空行。例如,下面使用一个Photo对象作为示例:

 Rectangle {
id: photo // id放在第一行,便于找到一个对象 property bool thumbnail: false //属性声明
property alias image: photoImage.source signal clicked // 信号声明 function doSomething(x) // javascript 函数
{
return x + photoImage.width
} color: "gray" // 对象属性
x: ; y: ; height: // 相关属性放在一起
width: { // 绑定
if (photoImage.width > ) {
photoImage.width;
} else {
;
}
} Rectangle { // 子对象
id: border
anchors.centerIn: parent; color: "white" Image { id: photoImage; anchors.centerIn: parent }
} states: State { // 状态
name: "selected"
PropertyChanges { target: border; color: "red" }
} transitions: Transition { //过渡
from: ""; to: "selected"
ColorAnimation { target: border; duration: }
}
}

属性组

如果使用了一组属性中的多个属性,那么使用组表示法,而不要使用点表示法,这样可以提高可读性。例如:

 Rectangle {
anchors.left: parent.left; anchors.top: parent.top;
anchors.right: parent.right; anchors.leftMargin:
} Text {
text: "hello"
font.bold: true; font.italic: true; font.pixelSize: ;
font.capitalization: Font.AllUppercase
}
可以写成这样: Rectangle {
anchors { left: parent.left; top: parent.top; right: parent.right; leftMargin: }
} Text {
text: "hello"
font { bold: true; italic: true; pixelSize: ; capitalization: Font.AllUppercase }
}

列表

如果一个列表只包含一个元素,那么我们通常忽略方括号。例如下面的代码:

states: [
State {
name: "open"
PropertyChanges { target: container; width: }
}
]

可以写成:

states: State {
name: "open"
PropertyChanges { target: container; width: }
}

JavaScript代码

如果脚本是一个单独的表达式,建议直接使用:

Rectangle { color: "blue"; width: parent.width /  }

如果脚本只有几行,那么建议写成一块:

Rectangle {
color: "blue"
width: {
var w = parent.width /
console.debug(w)
return w
}
}

如果脚本有很多行,或者需要被不同的对象使用,那么建议创建一个函数,然后像下面这样来调用它:

function calculateWidth(object)
{
var w = object.width /
// ...
// more javascript code
// ...
console.debug(w)
return w
} Rectangle { color: "blue"; width: calculateWidth(parent) }

如果是很长的脚本,我们可以将这个函数放在独立的 JavaScript 文件中,然后像下面这样来导入它:

import "myscript.js" as Script

Rectangle { color: "blue"; width: Script.calculateWidth(parent) }

QML学习(三)——<QML命名规范>的更多相关文章

  1. QML学习(二)——<QML语法>

    一.Qml类型 QML类型分为三类:基本类型.QML对象类型以及JavaScript类型 1 基本类型 我们可以再qt帮助文档中搜索基本类型查看 基本类型的概念是相对于QML对象类型而言的,QML 对 ...

  2. .NET设计规范————命名规范

    NET设计规范:约定.惯用法与模式———命名规范 前言:          最近在看<.NET设计规范:约定.惯用法与模式>一书,主要还是讲.NET的设计规范,以前对这一块也不是特别在意, ...

  3. java~google样式检查和命名规范

    对于代码的样式和各种元素的命名都是我们架构师需要考虑的,目前在java世界里,比较流行使用java的规范,包括了代码样式检查. 代码样式检查插件 样式文件xml google命名规范 一 代码样式检查 ...

  4. python代码规范和命名规范

    一.简明概述 1.编码 如无特殊情况, 文件一律使用 UTF-8 编码 如无特殊情况, 文件头部必须加入#-*-coding:utf-8-*-标识 2.代码格式 2.1.缩进 统一使用 4 个空格进行 ...

  5. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  6. CSS 命名规范及标题供参考与学习

    一.CSS 命名规范   XHTML-CSS写作建议 所有的xhtml代码小写 属性的值一定要用双引号("")括起来,且一定要有值 每个标签都要有开始和结束,且要有正确的层次 空元 ...

  7. QML学习:Rectangle,Text,TextEdit,Flickable,Flipable元素

    QML学习:Rectangle,Text,TextEdit,Flickable,Flipable元素 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 参 ...

  8. qml学习:对象和属性

    qml学习:对象和属性 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 参考文档<<Qt及Qt Quick开发实战精解.pdf>> ...

  9. 从零学习Fluter(八):Flutter的四种运行模式--Debug、Release、Profile和test以及命名规范

    从零学习Fluter(八):Flutter的四种运行模式--Debug.Release.Profile和test以及命名规范 好几天没有跟新我的这个系列文章,一是因为这两天我又在之前的基础上,重新认识 ...

随机推荐

  1. Vert.x 异步访问数据库 MySQL

    Vert.x提供异步访问数据库的API,数据库操作是一个耗时操作,使用传统的同步模型,容易阻塞线程,导致整体性能下降,因此我们对于数据库操作,需要使用Vert.x提供的异步API. Vert.x提供的 ...

  2. shell编程必须要掌握的命令-xargs

    一,说xargs命令前,说一下什么是shell编程 什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情.纯属个人理解,哈哈.不管是交互式的shell,还是非交互的shel ...

  3. Matlab策略模式

    策略模式的意图是定义一系列算法,把它们一个一个封装起来,并且使它们可以互相替换.通常每个策略算法不可抽象再分.本人仿照https://www.runoob.com/design-pattern/str ...

  4. 英语dyamaund钻石

    dyamaund  英文词汇,中文翻译为金刚石的;镶钻;用钻石装饰 中文名:镶钻;钻石装饰 外文名:dyamaund 目录 释义 dyamaund 读音:[ˈdaɪəmənd, ˈdaɪmənd] ...

  5. 【转】【Salesforce】salesforce 零基础学习(十七)Trigger用法

    看本篇之前可以相应阅读以下Trigger相关文章: 1.https://developer.salesforce.com/page/Trigger_Frameworks_and_Apex_Trigge ...

  6. GO实现Cron解析和定时任务

    Go的Cron表达式解析库:github.com/gorhill/cronexpr 核心类型和方法 // 表达式对象 expr *cronexpr.Expression // 解析cron表达式 ex ...

  7. SpringBoot加载配置文件(@PropertySource@importSource@Value)

    情景描述 最近新搭建了一个项目,从Spring迁到了Springboot,为了兼容Spring加载配置文件的风格,所以还想把PropertyPlaceholderConfigurer放在.xml文件里 ...

  8. 【Flask】 python学习第一章 - 4.0 钩子函数和装饰器路由实现 session-cookie 请求上下文

    钩子函数和装饰器路由实现 before_request 每次请求都会触发 before_first_requrest  第一次请求前触发 after_request  请求后触发 并返回参数 tear ...

  9. vue2 手记

    vue2 手记 Vue文档:https://cn.vuejs.org/v2/api/#provide-inject Vue 生命周期:https://cn.vuejs.org/v2/guide/ins ...

  10. Eureka 中服务下线的几种方式

    原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...