qml介绍

文章目录

  • qml简介
  • 对象
  • 一个风车的例子

qml简介

 从 Qt 4.7 开始,Qt 引入了一种声明式脚本语言,称为 QML(Qt Meta Language 或者 Qt Modeling Language),作为 C++ 语言的一种替代。而 Qt Quick 就是使用 QML 构建的一套类库。 QML 是一种基于 JavaScript 的声明式语言。在 Qt 5 中, QML 有了长足进步,并且同 C++ 并列成为 Qt 的首选编程语言。也就是说,使用 Qt 5,我们不仅可以使用 C++ 开发 Qt 程序,而且可以使用 QML。虽然 QML 是解释型语言,性能要比 C++ 低一些,但是新版 QML 使用 V8,Qt 5.2 又引入了专为 QML 优化的 V4 引擎,使得其性能不再有明显降低。在 Nokia 发布 Qt 4.7 的时候,QML 被用于开发手机应用程序,全面支持触摸操作、流畅的动画效果等。但是在 Qt 5 中,QML 已经不仅限于开发手机应用,也可以用户开发传统的桌面程序。
 QML 文档描述了一个对象树。QML 元素包含了其构造块、图形元素(矩形、图片等)和行为(例如动画、切换等)。这些 QML 元素按照一定的嵌套关系构成复杂的组件,供用户交互。
——摘自《Qt学习之路2》

对象

如果我们创建一个最简单的qml文件:

import QtQuick

Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
}


这个文件最上面的import语句,就是将QtQuick模块引入,下面的window{} 语句就是定义了一个window对象,对象的后面需要加上花括号{}。那么我们第一步定义对象就很简单只需要类名+{},其他的我们先省略。

一个风车的例子

import QtQuick
import QtQuick.Window

Window {
    width: 500
    height: 300
    visible: true
    title: qsTr("转呀转呀")

    Image {
        anchors.fill: parent                     //用当前元素填充parent
        id: background
        source: "../../images/background.png"

        Image {
            anchors.bottom: parent.bottom
            anchors.horizontalCenter: parent.horizontalCenter
            id: pole
            source: "../../images/pole.png"
        }

        Image {
            anchors.centerIn: parent             //放到parent的中间去
            id: wheel
            source: "../../images/pinwheel.png"
            Behavior on rotation{                //为特定的属性修改行为提供动画
                NumberAnimation{
                    duration:500
                }
            }
        }

        MouseArea{
            anchors.fill: parent
            onClicked:wheel.rotation+=360
        }
    }
}

qml介绍_第1张图片
点击屏幕风车会进行转动。
代码地址

你可能感兴趣的:(qml,qt,c++,qt)