专栏首页我有一个梦想Qt界面UI之QML初见(学习笔记四)

Qt界面UI之QML初见(学习笔记四)

一 概述

QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QML是可读的,声明式的文档,具有类似JSON的语法,支持使用JavaScrip表达式,具有动态属性绑定等特性。

二 QML语法基础

QMl的代码一般长如下:

import QtQuick 2.2

Rectangle {
    width: 360
    height: 360

    MouseArea {
        anchors.fill: parent
        onClicked: {
            Qt.quit();
        }
    }

    Text {
        anchors.centerIn: parent
        text: "Hello World"
    }
}

1 导入语句 import

  import语句导入了QtQuick模块,它包含了QML各种类型!

2 对象和属性

QML文档就是一个QML对象树,在这段代码中创建了两个对象,Rectangle和它的子对象Image,对象有它的类型指定,大写字母开头,后面跟一对大括号,里面有宽,高,颜色等属性。

属性通过“属性:值”来初始化,属性和它的值使用一个冒号隔开。属性可以分开写,也可写在一行,分开时分号不是不需的,写在一行必须有分号。

Rectangle {
    width: 360
    height: 36
}

3 布局

Image的anchors.centerIn起到了布局的作用,使Image处于对象的中心位置。还有其他布局方式。

4 注释

QML的注释和javascript相似。//单行注释,/**/多行注释。

5 表达式

“属性:值”中的值可以设置成表达式,例如:

Item {
    width: 100*3
    height: 50+22
}

  表达式中可包含其他对象或属性的引用,这样便创建了一个绑定,当表达式的值改变时,这个属性会自动更新为新的值。

6 调试输出

在QML代码中,可以用console.log()和conlole.debug()来输出调试信息。

接下来详细的讲解下import语句

三 import导入语句

默认情况下,QML文档可以访问到该.qml同目录下的对象类型,要想访问其他对象类型,就必须使用import导入该类型的命名空间。

1 模块导入

import<ModuleIdentifier><Version.Number> [as<Qualifier>] 例如:

import QtQuick 2.2 as Quick

Quick.Rectangle {
    width: 360
    height: 360
}

2 导入目录

QML文档支持直接导入包含有QML文档的目录:import “<DirectoryPath>” [as<Qualifier>] <DirectoryPath>既可以是本地目录,也可以是远程目录 <Qualifier>和前面一样,是限定符。 例如: import “../mycomponnets” 和 import "https://wiki.autodesk.com/mycomponnets" 注意:当导入网络上的目录时,只能访问该目录qmldir文件制定的QML文件和JavaScript文件。

3 目录清单qmldir文件

除了远程目录,本地目录也可以包含一个qmldir文件,这样可以只暴露qmldir中指定类型给导入该目录的客户端。如果目录中的JavaScript资源没有声明在一个qmldir文件中,那么它们不能暴露给客户端。 目录清单的语法如下:

4 JavaScript资源导入语句

import “<JavaScriptFile>” as "<Identifier>"

每个导入的JavaScript文件都要指定一个标识符,以便能够在QML文档中访问,这个标识符必须是唯一的。

此笔记主要参考《QT5编程入门》一书,并非原创,但写了这么多也很耗时,纯手打。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python 项目实践三(Web应用程序)第四篇

    接着上节继续学习,本章将建立用户账户 Web应用程序的核心是让任何用户都能够注册账户并能够使用它,不管用户身处何方。在本章中,你将创建一些表单,让用户能够添加主...

    用户1198337
  • UE4从零搭建CF游戏关卡(蓝图篇)

    一 往关卡中放置物体 ? 二 Static Mesh 和 BSP ? ? ? 从今天开始我们要建立一个类似CF游戏的场景,不写一句代码,纯蓝图实现。 三 英语学...

    用户1198337
  • 设计模式学习笔记-命令模式

    1. 概述   将一个请求封装为一个对象(即我们创建的Command对象),从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的...

    用户1198337
  • 推荐:一个画出高大上的机器学习图的神器(论文必备)

    本人在写论文的时候,很多图片是用matplotlib和seaborn画的,但是,我还有一个神器,Scikit-plot,通过这个神器,画出了更加高大上的机器学习...

    石晓文
  • Django实战-信息资讯-UEditor富文本编辑器

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • 推荐:一个画出高大上的机器学习图的神器(论文必备)

    本人在写论文的时候,很多图片是用matplotlib和seaborn画的,但是,我还有一个神器,Scikit-plot,通过这个神器,画出了更加高大上的机器学习...

    AI算法与图像处理
  • 解决QML debugging is enabled.Only use this in a safe environment警告

    Qt君
  • Meteor 1.6.x + Ant Design Table + recompose 实现数据分页效果

    我与梦想有个约会
  • Meteor 1.6.x + Ant Design Table + recompose 实现数据分页效果

    我与梦想有个约会
  • python模块循环引用导致问题

    这个问题遇到几次了,代码写多了之后,莫名其妙报错。现在终于知道了是因为循环引用的问题。重现一下:

    py3study

扫码关注云+社区

领取腾讯云代金券