QML笔记
文章钢要:
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笔记的更多相关文章
- Qt:QUrl构造时的qrc前缀
参考(按对我帮助从大到小排列): Qt内的各种路径(让人迷惑) - 鬼谷子com - 博客园 qt webengineview 加载本地资源方式 - beautifulday - 博客园 (17条消息 ...
- QML学习笔记(六)- 简单计时器和定时器
做一个简单的qml计时器和定时器,左键触发计时,右键触发定时 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(六)- 简单计时器和定时器 左键点击按钮,触发计时器,中键可以暂停计时,同 ...
- QML学习笔记(五)— 做一个简单的待做事项列表
做一个简单的QML待做事项列表,能够动态添加和删除和编辑数据 GitHub:八至 作者:狐狸家的鱼 本文链接:QML学习笔记(五)— 做一个待做事项列表 主要用到QML:ListView 效果 全部代 ...
- Qt界面UI之QML初见(学习笔记四)
拖了大半年,今天终于有更新了...我自己都不好意思,最近太忙了! 今天讲一下:QML语法 一 概述 QML是一种专门用于构建用户界面的编程语言,它允许用户构建高性能,具有流畅特效的可视化应用程序,QM ...
- qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)
原博主博客地址:http://blog.csdn.net/qq21497936本文章博客地址:http://blog.csdn.net/qq21497936/article/details/78516 ...
- qml自学笔记------自己写相似于劲舞团的按键小游戏(中)
接上篇<qml自学笔记------自己写类似于劲舞团的按键小游戏(上)> 第三部分DisplayPart.qml 代码的其它部分都是渣,就这里花了点时间,整个小游戏就靠这个文件. 首先,屏 ...
- QML学习笔记之一
摘自<Qt Quick中文手册> Qt Quick提供了一套高动态,丰富的QML元素来定制用户界面的说明性框架. Qt Quick包含了QtDeclarative C++模块.QML,并且 ...
- Qt Quick 与 QML语言(初学笔记1)
Qt Quick Qt Quick是一些新的UI技术的集合,用来帮助开发者创建一种现在越来越多用于手机.多媒体播放器.机顶盒以及其他便携式设备上的直观的.现代的.流畅的用户界面.简单来说,Qt Qui ...
- OpenLayers学习笔记(四)— QML显示html中openlayers地图的坐标
GitHub:八至 作者:狐狸家的鱼 本文链接:实现QML中显示html中地图的坐标 如何QML与HTML通信已经在这篇文章 QML与HTML通信之画图 详细讲述了 1.HTML var coord; ...
- OpenLayers学习笔记(三)— QML与HTML通信之 地图上点击添加自由文本
实现在地图随意点击,弹出文本输入框,输入任意文字,完成自由文本添加的功能 作者: 狐狸家的鱼 GitHub:八至 本文链接:地图上点击添加自由文本 关于如何QML与HTML通信已经在上一篇文章 QML ...
随机推荐
- python之路46 django request对象 form表单 pycharm连接数据库 ORM简介
静态文件配置 1.编写一个用户登录页面 2.静态文件 不怎么经常变化的文件 主要针对html文件所使用的到的各种资源 css文件.js文件.img文件.第三方框架文件 django针对静态文件资源需要 ...
- 蚂蚁感冒【第五届蓝桥杯省赛C++A/B组】
蚂蚁感冒 长 \(100\) 厘米的细长直杆子上有 \(n\) 只蚂蚁. 它们的头有的朝左,有的朝右. 每只蚂蚁都只能沿着杆子向前爬,速度是 1 厘米/秒. 当两只蚂蚁碰面时,它们会同时掉头往相反的方 ...
- Java入门及环境搭建
1.JAVA三大版本 JAVASE(标准版:桌面程序开发.控制台开发...) JAVAME(嵌入式:手机程序.小家电...) JAVAEE(企业级:web端.服务器开发...) 2.开发环境 JDK: ...
- Java学习记录:2022年1月13日(其二)
Java学习记录:2022年1月13日(其二) 摘要:本篇笔记主要记录了在设计类时的一些注意事项,类加载时类中各个部分的加载顺序以及继承和多态的知识. 目录 Java学习记录:2022年1月13日 ...
- 前端Linux部署命令与流程记录
以前写过一篇在Linux上从零开始部署前后端分离的Vue+Spring boot项目,但那时候是部署自己的个人项目,磕磕绊绊地把问题解决了,后来在公司有了几次应用到实际生产环境的经验,发现还有很多可以 ...
- jupyter的配置
step1.安装jupyter 使用pip或者conda等包管理工具安装jupyter(这部分倒是没有任何难度,一般也没有什么坑) conda install jupyter notebook或者pi ...
- FLASH-CH32F203替换CH32F103 FLASH快速编程移植说明
因CH32F203 相对于CH32F103 flash操作的快速编程模式由单次128字节编程变成了单次256字节编程,该文档说明主要目的是为了方便客户在原先CH32F103工程的基础上实现flash ...
- gitlabApi如何获取项目文件夹的commitId
在我们做配置管理系统和gitlab系统集成的时候,有一个常见的场景,就是要获取某个文件的commitId,来记录本次配置文件提交的版本.这个通过gitlabApi很容易实现: GET /proje ...
- rt-thread模糊到清晰系列: timer.c
#include <rtthread.h> #include <rthw.h> /* hard timer list */ static rt_list_t rt_timer_ ...
- 微机原理与系统设计笔记7 |常用芯片接口技术、中断系统与可编程中断控制器8259A
打算整理汇编语言与接口微机这方面的学习记录.本部分介绍常用芯片接口技术.中断系统与可编程中断控制器8259A. 参考资料 西电<微机原理与系统设计>周佳社 西交<微机原理与接口技术& ...