文章钢要

1、qml基础知识

2、qml语言技巧

一、QML basic types

QML Language提供的基础类型:int ,bool,string,double,real,var,url,enumeration,list,color

QML Modules(QtQuick)提供的基础类型:date, point ,rect,size,Qt,QtObject,Component,Connections,Bingding

导出到QML环境中的C++类型。

注意事项:

1、list类型必须和object类型关联使用

2、enumeration必须 must be defined by a registered QML object type。

3、id属性首字符必须是小写字母或下划线

4、列表属性(list)是包含在【】内,以逗号分隔的多个元素集合。和js的数组类似。

5、信号处理器on<Signal>形式:onClicked:{ Qt.quit(); }

6、附加属性如:item{  Keys.enabled:false ;} ,Component.onCompleted:console.log("hello Qt");

二、QML入门

程序框架一:QQmlApplicationEngine 搭配 Window,QML有控制权

main(int argc,char *argv[]){
  QGuiApplication app(argc,argv);
  QQmlApplicationEngine engine;
  engine.load(QUrl(QStringListeral("qrc://main.qml")));
  return app.exec();//主循环
}
import QtQuick.Window 2.1
Window{
width:360;
 height:240;
MouseArea{
anchors.fill:parent;
onClicked:{ Qt.quick(); }
}
Text{
text:"Hello Qt Quick";
anchors.centerIn:parent;
}
}

程序框架二:Item作为QML根对象 (QQuickView 搭配 Item ),c++有控制权

main(int argc, char * argv[]){
QGuiApplication app(argc,argv);
QQuickView viewer;
viewer.setSource(QUrl("qrc://main.qml"));
viewer.show();
return app.exec();
}

Window用于创建一个与OS相关的顶层窗口,text,Rectangle,image都是在里面表演的演员。

Rectangle :color和gradient同时设置,那么gradient生效。如果设置color的属性为transparent,那么可以达到只绘制边框不填充的效果。

      border.width设置边框的宽度,border.color指定边框颜色

color:“#RRGGBB”,“#AARRGGBB”,Qt.rgba(0.8, 0.6, 0.4, 1.0)、Qt.lighter()

  类型参考:https://doc.qt.io/qt-5/qml-color.html

item: 自带通用属性x,y,width,height,anchoring,button处理

  本身不可见,可以用它来分组其他可视图元

anchors锚布局:top,bottom,verticalCenter,horizontalCenter,baseline

响应按键:通过附加属性Keys来处理按键。特定按键信号returnPressed,普通信号pressed和released

    Keys.enabled:true

    keys.onEscapePressed:Qt.quit();

    Keys.onBackPressed:Qt.quit();

    keys.onPressed:{

    event参数:KeyEvent类型。

    event.key :case  Qt.Key_0, Qt.Key_1,,Qt.Key_2,,Qt.Key_3,,Qt.Key_4,,Qt.Key_A。等}

Text:有font,text,color,elide(省略),textFormat,wrapMode,style等属性

Button:activeFocusOnPress属性指定按钮被按下时获取焦点。

ButtonStyle:有background(Component类型),control,label三个属性

    style:ButtonStyle{ background: Rectangle { } }

Image: fillMode属性可以设置图片的填充模式,Image.Stretch(拉伸),PreserveAspectFit(等比缩放),Image.PreserveAspectCrop(最大填充,必要时裁剪)

    Tile(水平和垂直两个方向平铺,就像贴瓷砖那样),TileVertically(垂直平铺),TileHorizontally(水平平铺),Pad(原样不变)

    Image默认是阻塞加载图片,可以设置asynchronous属性true开启异步。当status的值为Image.Ready时 可屏蔽加载等候界面。

    Image{ source: "images/myImage.png")}

    Image{ onStatusChanged:{ } } //status属性变化时会发射statusChanged信号

BusyIndicator:一个等待图元,耗时操作时使用

    running属性:true时显示

    style:可定制样式,默认是一个转圈圈的动画

FileDialog:文件对话框,通过open() 方法设置visible为true。

    selectExisting:表示选择已有文件或文件夹

    selectMultiple:ture表示多选

    nameFilters:用于设定一个过滤器列表。nameFilters:[ "Image Files (*.jpg *.png *.gif) , “Bitmap Filter (*.bmp)” , " * (*.*)" ]  //过滤器列表

    selectedNameFilter:"Image Files (*.jpg  *.png  *.gif)";  //保存用户选择的过滤器

    fileUrl:保存该文件的路径,如果选择多个文件则该属性为空。

    fileUrls:是一个列表

    folder:文件夹的位置

js 语法:Undefined类型只有一个值:undefined,声明的变量没有初始化时,就是该值

    如:var oneValue; if( oneValue == undefined){  } // 函数无明确返回值时,返回的也是undefined

    Null类型也只有衣蛾值,null   // property var reminderWindow:null

    类型转换:toString() ; // var integer = 3.1415;  console.log(integer.toString());

        parseInt()和parseFloat()把非数字的String转换成数字。

    强转:Boolean(),Number(),String()

对象:Object是所有js类的基类,isPrototypeOf(object) ,判断对象是否为另一个对象的原型

      propertyIsEnumerable(property),判断给定的属性是否可以用for...in 语句进行枚举。

      toString(),返回对象的字符串表示,对于Rectangle.toString()返回其对应的C++类型名字或QML类型名字。

      valueOf(),返回最适合该对象的原始值,对于许多类,该方法返回的值都与toString一样。

    动态增加属性:var person = new object();   person.name = "zhangsan";  person.year = 20;

    动态增加方法:person.printInfo = function printInfo() {  };

    使用数组下标访问方法:person["printInfo"]() ; //这个有点意思

    for ...in :访问对象属性: for (var prop in person) {  console.log(prop  , " , ",  person[prop] )};

    字面量表示法:var person = { "name" : "zhangsan" ; "year" : 20 }

    console提供定时器,可以用于计算代码耗时

      console.time(tag) //启动定时器 ,字符串类型的tag是必需的

      console.timeEnd(tag) // 停止计时器

三、测试

QML笔记的更多相关文章

  1. Qt:QUrl构造时的qrc前缀

    参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...

  2. QML学习笔记(六)- 简单计时器和定时器

    做一个简单的qml计时器和定时器,左键触发计时,右键触发定时 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(六)- 简单计时器和定时器 左键点击按钮,触发计时器,中键可以暂停计时,同 ...

  3. QML学习笔记(五)— 做一个简单的待做事项列表

    做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...

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

    拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...

  5. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...

  6. qml自学笔记------自己写相似于劲舞团的按键小游戏(中)

    接上篇<qml自学笔记------自己写类似于劲舞团的按键小游戏(上)> 第三部分DisplayPart.qml 代码的其它部分都是渣,就这里花了点时间,整个小游戏就靠这个文件. 首先,屏 ...

  7. QML学习笔记之一

    摘自<Qt Quick中文手册> Qt Quick提供了一套高动态,丰富的QML元素来定制用户界面的说明性框架. Qt Quick包含了QtDeclarative C++模块.QML,并且 ...

  8. Qt Quick 与 QML语言(初学笔记1)

    Qt Quick Qt Quick是一些新的UI技术的集合,用来帮助开发者创建一种现在越来越多用于手机.多媒体播放器.机顶盒以及其他便携式设备上的直观的.现代的.流畅的用户界面.简单来说,Qt Qui ...

  9. OpenLayers学习笔记(四)— QML显示html中openlayers地图的坐标

    GitHub:八至 作者:狐狸家的鱼 本文链接:实现QML中显示html中地图的坐标 如何QML与HTML通信已经在这篇文章 QML与HTML通信之画图 详细讲述了 1.HTML var coord; ...

  10. OpenLayers学习笔记(三)— QML与HTML通信之 地图上点击添加自由文本

    实现在地图随意点击,弹出文本输入框,输入任意文字,完成自由文本添加的功能 作者: 狐狸家的鱼 GitHub:八至 本文链接:地图上点击添加自由文本 关于如何QML与HTML通信已经在上一篇文章 QML ...

随机推荐

  1. C++ 编译依赖管理系统分析以及 srcdep 介绍

    C++ 编译依赖管理系统分析以及 srcdep 介绍 如果用 C++ 写一个中小型软件,有要用到很多第三方库的话,相信不少人会觉得比较麻烦.很多新兴的语言都有了统一的依赖管理系统和构建系统,但是 C/ ...

  2. 软件安装——idea的安装和使用

    Idea的安装和使用 一.下载和安装 下载步骤 官网下载地址:Download IntelliJ IDEA: The Capable & Ergonomic Java IDE by JetBr ...

  3. 虚拟化技术浅析第二弹之初识Kubernetes

    作者:京东物流 杨建民 一.微服务架构起源 单体架构:可以理解为主要业务逻辑模块(我们编写的代码模块,不包括独立的中间件)运行在一个进程中的应用,最典型的是运行在一个Tomcat容器中,位于一个进程里 ...

  4. 大公司为什么禁止SpringBoot项目使用Tomcat?

    本文已经收录到Github仓库,该仓库包含计算机基础.Java基础.多线程.JVM.数据库.Redis.Spring.Mybatis.SpringMVC.SpringBoot.分布式.微服务.设计模式 ...

  5. Java入门与进阶P-5.7+P-5.8

    素数 去掉偶数后,从3到x-1 每次加2 ·如果×是偶数,立刻 ·否则要循环(n-3)/2+1遍 ·当n很大时就是n/2遍 构造素数表 欲构造n以内的素数表 1. 令x为2 2. 将2x/ 3x. 4 ...

  6. 流程概述与顺序结构-选择结构_单if语句

    流程概述与顺序结构 概述 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果 有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要 ...

  7. 100 行 shell 写个 Docker

    作者:vivo 互联网运维团队- Hou Dengfeng 本文主要介绍使用shell实现一个简易的Docker. 一.目的 在初接触Docker的时候,我们必须要了解的几个概念就是Cgroup.Na ...

  8. 【HMS Core】使用机器学习服务和搜索服务识别植物

    ​1.介绍 总览 机器学习服务(ML Kit)为开发者提供简单易用.服务多样.技术领先的机器学习能力,助力开发者更快更好地开发各类AI应用.同时,搜索服务(Search Kit)通过端侧SDK和云侧A ...

  9. React组件渲染触发的条件-归纳总结

    一.React组件何时发生渲染--何时会生成React元素? React组件的渲染发生在两个阶段. 1. 组件挂载. 2. 组件更新. 二.React组件更新的触发条件是什么? 对没有实现should ...

  10. UBUNTU切换内核

    查询可更换内核的序号    gedit /boot/grub/grub.cfg查询已安装的内核和内核的序号.找到文件中的menuentry (图中在一大堆fi-else底下)menuentry底下还有 ...