自学内容网 自学内容网

QML学习(三) QML 的基本语法介绍

QML语言是基于Javascript语言的,其实,QML基本跟JS语言一致,所以,想要了解QML的语法,基本上了解JS的语法也可以。
QML基本结构:QML 文档以.qml 为扩展名,基本结构是由一系列对象声明组成,每个对象可以包含属性、信号、方法等。对象之间可以嵌套,形成层次结构,用于表示用户界面的布局和组件关系。举个例子:

import QtQuick 2.15
Rectangle {
    width: 200
    height: 200
    color: "#ccffcc"
}

导入语句:位于 QML 文档顶部,用于加载所需的模块、类型或脚本。格式通常为 import <VersionMajor.VersionMinor> 或 import “directory” 或 import “file.js” as 等。
例如:上面例子中“import QtQuick 2.15” 表明导入导入 QtQuick 模块的 2.15 版本;“import QtQuick 2.0” 就是导入 QtQuick 模块的 2.0 版本。
对象声明:基本形式为:
对象类型 {
属性名: 值
方法名: 函数体
信号名: 信号处理函数
}
可以在花括号内定义对象的属性、方法和信号等。对象可以嵌套,形成层次结构。例如:

Rectangle {
    width: 100
    height: 100
    color: "red"
    Text {
        anchors.centerIn: parent
        text: "Hello"
    }
}

对象声明与实例化:通过指定对象类型和属性来创建对象实例,对象类型可以是 Qt Quick 提供的内置类型,如 Rectangle、Text、Button 等,也可以是自定义的类型。例如:

Button {
    text: "Click Me"
    onClicked: {
        // 按钮点击时的处理逻辑
    }
}

属性赋值与绑定:使用 “属性名:值” 的形式为对象的属性赋值,可以是简单的值,如数字、字符串、布尔值等,也可以是表达式或其他对象的属性。例如:

Rectangle {
    width: 100
    height: width * 2  // 高度绑定到宽度的两倍
    color: "red"
}

举一个比较详细的例子来说明属性

import QtQuick 2.15
import QtQuick.Controls 2.15

Window {
    visible: true
    width: 640
    height: 480
    title: "Custom Button Example"
    // 包含下面自定义按钮
    CustomButton {
        anchors.centerIn: parent
    }
}
Button {
//按钮的ID,必须是唯一,可被其他地方调用的
    id: customButton
    // 按钮显示的文本
    text: "Click Me"
    // 按钮的宽度
    width: 150
    // 按钮的高度
    height: 50
    // 按钮的背景颜色
    background: Rectangle {
        color: "lightblue"
    }
    // 按钮的文本颜色
    color: "white"
    // 按钮按下时的背景颜色
    pressedBackground: Rectangle {
        color: "blue"
    }
    // 按钮的字体大小
    font.pixelSize: 20
    // 按钮的边框颜色
    border.color: "black"
    // 按钮的边框宽度
    border.width: 2
    // 按钮是否可点击
    enabled: true
    // 按钮是否可见
    visible: true
    // 按钮的鼠标悬停效果
    hoverEnabled: true
    // 鼠标悬停时的背景颜色
    hoverBackground: Rectangle {
        color: "darkblue"
    }
    // 按钮的点击事件处理函数
    onClicked: {
        console.log("Button clicked")
    }
}

如果对一些属性名称不熟悉,可以参考QML中常用属性说明
信号与槽机制:通过信号和槽机制实现对象之间的事件通信和交互。一个对象可以发出信号,其他对象可以连接到该信号的槽来响应信号。例如:

Button {
    text: "Click Me"
    onClicked: {
        console.log("Button clicked")
    }
}

JavaScript 嵌入:QML 支持在其中嵌入 JavaScript 代码,可以在属性绑定、信号处理函数、方法等中使用 JavaScript 语法和逻辑。例如:

Rectangle {
    width: 100
    height: 100
    color: "black"
    function changeColor() {
        if (color === "black") {
            color = "red"
        } else {
            color = "black"
        }
    }
    MouseArea {
        anchors.fill: parent
        onClicked: {
            changeColor()
        }
    }
}

原文地址:https://blog.csdn.net/qianniulaoren/article/details/144788310

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!