qml定义函数_QML类型系统

更新时间:2023-06-10 06:58:39 阅读: 评论:0

qml定义函数_QML类型系统
QML类型系统
基本类型
QML默认⽀持⼀些基本类型,使⽤它们时不需要import语句。
下⾯是QML语⾔提供的基本类型:
类型描述
bool true/fal,以⼆进制存储。
double带有⼩数点的数字,并以双精度IEEE浮点格式存储。
enum命名枚举值。
int整数,例如0、10或-20。取值范围为-2147483648⾄2147483647。
list QML对象的列表。
real带⼩数点的数字,例如1.2或-29.8。以双精度IEEE浮点格式存储。
string带引号的⾃由格式⽂本字符串,例如“ Hello world!”。
url资源定位符。可以是相对路径,也可以是绝对路径。
var通⽤属性类型,可以引⽤任何数据类型。
⼩贴⼠:enum不能单独使⽤,必须结合其类型⼀起使⽤。list只能存储QML对象,⽽不能包含任何基本类型的值。
另外,QML的QtQuick模块也提供了⼀些基本类型:
类型描述
color 可以通过SVG颜⾊名称(如"red"或"blue")、⼗六进制字符串(如"#RRGGBB"或"#AARRGGBB")、Qt全局对象的⽅法(如Qt.rgba()或Qt.hsva())来进⾏引⽤。
事业编考什么date⽇期值(如"2020-12-31 23:59")。云之彼岸
font字体类型(如font.family)。
matrix4x4⼀个4x4的矩阵类型,⽀持幂运算。可以使⽤Qt.matrix4x4()函数来组成此类型的值。
point具有x和y属性的类型(如"0, 20")。
一线管理者quaternion具有scalar, x, y和z属性的类型(如"1, 10, 10, 1",Qt.quaternion(1, 10, 10, 1))。
rect具有x, y, width和height属性的类型(如"50, 50, 100x100",Qt.rect(50, 50, 100, 100))。size具有width和height属性的类型(如"150x50",Qt.size(150, 50))。
vector2d⼆维向量类型。具有x和y属性(如"1, 2",Qt.vector2d(1,2);)。
vector3d三维向量类型。具有x、y和z属性(如"0, 1, 0",Qt.vector3d(0, 1, 0))。
vector4d四维向量类型。具有x、y、z和w属性(如"1, 2, 3, 4",Qt.vector4d(1,2,3,4);)。
⽰例如下:
property int count: 10
property double weight: 100.0
property string placeHolderText: "Hello QML"
property color backgroundColor: "#F7F7F7"
property size defaultSize: Qt.size(150, 50)
property rect defaultRect: Qt.rect(50, 50, 100, 100)
property vector2d defaultVector2d: Qt.vector2d(1,2)
对象类型
QML对象类型⽤于实例化QML对象。它通过指定类型名称后跟⼀组包含该对象属性的花括号来声明对象的类型。对象类型名称必须由字母、数字或下划线组成,并且以⼤写字母开头。使⽤它们时需要import语句。每个QML⽂件都隐式定义了⼀个QML对象类型,该类型可以在其他QML⽂件中重复使⽤。
内置对象类型
QML提供了很多内置对象类型,如QtQuick模块中的Rectangle、Text、Image、TextInput等。QtQuick.Controls模块中
的Button、Label、CheckBox、Page等。
使⽤QML⽂件实现⾃定义对象类型
可以通过创建QML⽂件实现⾃定义QML对象类型。该⽂件名称同样必须由字母、数字或下划线组成,并且以⼤写字母开头。如下⾯创建⼀个SquareButton.qml⽂件:
// SquareButton.qml
import QtQuick 2.0
Rectangle {
property int side: 100
width: side; height: side
color: "red"
MouArea {
anchors.fill: parent
onClicked: console.log("Button clicked!")
}
}
元宵节诗歌这样就可以在与SquareButton.qml⽂件同级⽬录的其他QML⽂件中使⽤SquareButton类型。
// myapplication.qml
import QtQuick 2.0
SquareButton {}
通过qmlscene命令执⾏myapplication.qml⽂件,可以看到运⾏效果如下:
点击界⾯后,终端会有响应⽇志输出。
内联组件
有时,为⼀个类型创建⼀个新⽂件会很不⽅便。在这种情况下,可以使⽤内联组件来完成。内联组件是在QML⽂件中声明⼀个新组件。语法如下:阿登战役
component  : BaType {// declare properties and bindings here
}
在声明内联组件的⽂件中,可以直接通过名称引⽤该类型。
// Images.qml
import QtQuick 2.15
Item {
component LabeledImage: Column {
property alias source: image.source
手工制作网
property alias caption:
Image {
id: image
width: 50
height: 50
}
铜锣寨
Text {
id: text
font.bold: true
}
}
Row {
LabeledImage {
id: before
source: "before.png"
caption: "Before"
}
LabeledImage {
id: after
source: "after.png"
caption: "After"
}
}
property LabeledImage lectedImage: before
}
如果在其他⽂件中引⽤该内联组件,则必须在其前⾯加上组件名称。强迫症什么意思
// LabeledImageBox.qml
import QtQuick 2.15
Rectangle {
property alias caption: image.caption
property alias source: image.source
border.width: 2
Images.LabeledImage {
id: image
}
}
⼩贴⼠:内联组件不与声明它们的组件共享作⽤域,并且不可以嵌套使⽤。
JavaScript类型
QML可以⽀持JavaScript中的数据类型。如基本类型String、Number、Boolean、Null、Undefined、Symbol等。引⽤类
型Object、Array、Function、Date等。
QML允许使⽤var或let语句在JavaScript表达式中声明⼀个变量,如下⾯的代码在QML中的JavaScript表达式⾥都是完全正常的:
var cars = new Array();
cars[0] = "Cat";
cars[1] = "Dog";
cars[2] = "Panda";
var sum = function (num1, num2) {
return num1 + num2
}
console.log(sum(10, 20))
⼩贴⼠:与QML不同,JavaScritp作为⼀种弱类型语⾔,它的变量是没有类型的,只有值才具有类型。变量可以随时持有任何类型的值。

本文发布于:2023-06-10 06:58:39,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1031844.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:类型   对象   组件   数字
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图