: 是绑定, 不是=(赋值)就像C++引用一样。
注释 和c语言一样// /**/
source : “…/image/background.png” //url
parent //父窗口
Behavior //行为
qsTr() 用来翻译的类似 tr()
// main.qml
import QtQuick 2.12
import QtQuick.Window 2.12
Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
}
每一个 QML 有且只有一个根元素,类似于 XML 文档。这个根元素就是这个 QML 文档中定义的 QML 元素,在这个例子中就是一个 Window 对象。
定义变量时只用 var 运算符,可以将它初始化为任意的值,你可以随时改变变量所存储的数据类型
var i = 0
console.log(i)
i = "hello"
console.log(i)
QML对象类型是指具有properties, signals, methods等的对象。 (属性,信号,方法)
var:可以引用任何数据类型的通用属性类型。
Item {
property var aNumber: 100
property var aBool: false
property var aString: "Hello world!"
property var anotherString: String("#FF008800")
property var aColor: Qt.rgba(0.2, 0.3, 0.4, 0.5)
property var aRect: Qt.rect(10, 10, 10, 10)
property var aPoint: Qt.point(10, 10)
property var aSize: Qt.size(10, 10)
property var aVector3d: Qt.vector3d(100, 100, 100)
property var anArray: [1, 2, 3, "four", "five", (function() { return "six"; })]
property var anObject: { "foo": 10, "bar": 20 }
property var aFunction: (function() { return "one"; })
}
当声明的变量未初始化时,该变量的默认值就是 undefined
Null 类型也只有一个值,即 null。
它有 true 和 false 两个值。
Number 类型是最特殊的,它既可以表示 32 位的整数,也可以表示 64 位的浮点数。
它存储 Unicode 字符,对应的 Qt C++ 类型为 QString。
var name = ‘Lv Bu’ //单引号(')来声明
var name = “Guan Yu” //双引号(")
Rectangle {
Component.onCompleted:{
var name = "Zhang San Feng"
console.log(typeof name) // 输出:qml:string
console.log(typeof 60) // 输出:qml:number
}
}
变量 name 的类型是 string,
字面量 60 的类型是 number。
其中 “qml:” 是使用 console.log 输出信息时携带的前缀。
第一个字符必须是字母、下画线(_)或美元符号($)。
余下的字符可以是下画线、美元符号或者任何字母或数字字符。
var test
var objectName
var —phone
var $1
Boolean、Number、String 三种原始类型,都有 toString() 方法,可以把它们的值转换为字符串
var name = "Zhang San Feng"
console.log(name.toString())
console.log(true.toString())
var visible = false
console.log(visible.toString())
var integer = 3.14159
console.log(integer.toString())
Number 类型的 toString() 方法还可以按基转换,比如:
var integer = 13
console.log (integer.toString(16)) // 输出: D
parselnt() 和 parseFloat() 可以把非数字的原始值转换成数字,前者把值转换为整数,后者把值转换成浮点数。这两个方法只能用于 String 类型,如果你对其他类型调用它们, 返回值将是奇葩的 NaN。
parselnt() 和 parseFloat() 会扫描字符串,直到遇到第一个非数字字符时停止将转换的结果返回。
比如
parselnt(”2014年")将会返回 2014。
parseFloat(),会将第一个小数点作为有效字符,而 parselnt() 则不会。
var numl = parselnt ("2014 年") // 输出:2014
var num2 = parselnt ("OxC") // 输出:12
var num3 = parselnt ("3.14") // 输出:3
var num4 = parselnt ("green") // 输出:NaN_
var num5 = parseFloat ("3.14159") // 输出:3.14159
var num7 = parseFloat ("Am I Float") // 输出:NaN
parselnt() 还支持基模式,
var numl = parselnt ("AK47", 16) // 输出:10
var num2 = parselnt ("AK47", 10) // 输出:NaN
var num3 = parselnt ("010", 8) // 输出:8
var nun4 = parselnt ("010", 10) // 输出:10
Boolean(value),把 value 转换成 Boolean 类型。
Number(value),把value转换为数字(整数或浮点数)。
String(value), 把value转换成字符串。
function functionName(arg1, arg2, ..., argN){
// 要执行的代码
}
默认都是有返回值的,即便你没有显式使用 return 语句,它也会返回 undefined。如果你想把函数运算的结果返回给调用它的地方,可以使用 return 语句
function add(numberl, number2){
var result = number1 + number2;
console.log(number1, "+" ,number2, result);
return result;
}
运算符比较特殊,它放在一个表达式前,舍弃表达式的值,返回 undefined。
前面讲过了,对于原始值,返回原始类型;对于引用值,返回 object。
这导致你无法准确判断一个对象的引用类型,所以 ECMAScript 引入了 instanceof 运算符。
用来测试一个对象的实际类型,你需要显式指定要测试的类型。
var str = new String (“hello world”);
console.log (str instanceof String); // 输出:true
运算符用来创建一个对象,前面用了很多次了,不再赘述。
运算符比较特别,在 QML 中,一般它只能删除一个对象内由你定义的属性,而框架定义的那些核心属性,多数是你不能删除的。
我们在 ECMAScript 中调用 delete 多数时候是解除对对象的引用,以免老有人引用某个对象而导致它逍遥法外。
Q_INVOKABLE void systemReboot();
关键字explicit可以阻止隐式转换的发生.
explicit Beep(QObject *parent = 0);
Q_PROPERTY(QString sysVolume READ sysVolume NOTIFY sysVolumeChanged)
在这里插入代码片