7.qml-Qt对象

摘要:
我们还为用户提供了许多主机对象。当然,用户也可以自己自定义对象。内置对象:在本章中,我们将学习当前Qt对象中的常见属性和方法(稍后将更新和添加)。1.属性简介应用程序:font()静态成员函数应用程序的返回值。arguments:调用应用程序时存储参数列表。name:存储应用程序的名称inputMethod:

QML除了支持ECMAScript内置对象对象外,还自己给用户提供了许多宿主对象.当然用户也可以自己自定义对象.

  • 内置对象 : 由 ECMAScript所提供的对象;如Object、Array、Math、Date等等。
  • 宿主对象 :即由 ECMAScript 实现的宿主环境提供的对象,比如Qt对象.
  • 自定义对象 :自定义构造函数所创建的对象。

本章我们来学习目前Qt对象中的常用属性和方法(后续再更新添加).


1.Properties介绍
application : object,是一个对象,通过它可以访问当前的应用程序状态属性,application有下面几个属性

  application.state : 应用程序当前运行的状态,它的值有:

    • Qt.ApplicationActive(激活的,用户能够与应用程序交互的状态)、
    • Qt.ApplicationInactive(未激活的,处于可见或部分可见的状态)、
    • Qt.ApplicationSuspended(暂停的,用户不可见的状态)、
    • Qt.ApplicationHidden(隐藏的,最小化在后台运行的状态)

  application.layoutDirection: 应用程序中图标和文本布局的方向,它的值与地区默认值相关,大部分都是Qt.LeftToRight,少部分是Qt.RightToLeft
  application.font: 应用程序默认的字体,此属性保存着QGuiApplication::font()静态成员函数的返回值
  application.arguments: 存储调用应用程序时的参数列表
  application.name: 存储应用程序的名称

inputMethod : object,输入对象,比如inputMethod.visible(表示虚拟的输入设备是否显示),后面在实现QML虚拟键盘时讲解.

platform : object,平台对象,存储有关平台的信息,比如platform.os="android",则表示当前程序运行在安卓平台
styleHints : object,存储平台样式提示的对象,参考QSymHints类,比如styleHints.keyboardAutoRepeatRate,则表示该平台提供的按键重复按下的速率


2.Methods介绍

  • binding(function) : 将函数绑定到一个对象上
  • string btoa(data) : 编码,将ascii码编码成一个base64编码的字符串
  • string atob(data) : 解码,将base64编码解码成ascii码字符串

示例如下所示:

var encodeString = Qt.btoa("hello qt by NQian")
console.log(encodeString) // 打印"aGVsbG8gcXQgYnkgTlFpYW4="

var decodeString = Qt.atob(encodeString)
console.log(decodeString) // 打印"hello qt by NQian"
  • callLater(function, argument1, argument2, ...) : 排队稍后调用
  • callLater(function) : 排队稍后调用,使用此函数可消除对函数或信号的冗余调用,当多个信号同时触发并连续多次调用function函数时,该函数将只调用一次。
  • object createComponent(url, mode, parent) : 通过指定的url路径来创建qml组件对象.创建失败则返回null,mode可以设置为Component.Asynchronous或者Component.PreferSynchronous, parent则是设置组件的父对象.
  • object createQmlObject(qml, object parent, string filepath) : 创建一个qml对象,如果参数qml字符串里面存在拼写错误,则返回null,如果指定了filepath,则将错误报告存储起来.
  • color darker(baseColor, real factor) : factor大于1.0,则此函数返回较深的颜色。将factor设置为3.0,返回亮度为三分之一的颜色。如果factor小于1.0,则返回颜色较浅,此时该建议使用Qt.lighter()函数
  • color lighter(baseColor, real factor) : 原理和darker相反

示例如下所示:

Rectangle {
    color: "red"
    Component.onCompleted: {
        console.log(color) // 打印 #ff0000
        console.log(Qt.darker(color,2.5)) // 打印 #660000
    }
}    
  • exit(retCode) : 应用程序退出.
  • quit() : 通知应用程序退出,相当于调用exit(0).
  • list<string> fontFamilies() : 返回应用程序可用的字体名称列表
  • string formatDate(date, variant format) : 返回Date的日期字符串形式,参数1可以是JavaScript的Date对象、QDate、QTime或QDateTime值
  • string formatDateTime(dateTime, variant format) : 返回Date的日期和时间字符串形式,参数1可以是JavaScript的Date对象、QDate、QTime或QDateTime值
  • string formatTime(time, variant format) : 返回Date的时间字符串形式,参数1可以是JavaScript的Date对象、QDate、QTime或QDateTime值

示例如下所示:

var today = new Date();
console.log(Qt.formatDateTime(today, "yyyy/M/d hh:mm:ss")); // 打印当前时间 2021/3/23 21:48:46
  • bool isQtObject(object) : 如果对象是Qt对象返回true,否则返回false。

isQtObject示例如下所示:

var today = new Date();
console.log(Qt.isQtObject(today)); // 非Qt对象, 打印 false
console.log(Qt.isQtObject(this));  // 打印 true
  • locale(name) : 返回一个指定name区域的Locale对象

locale示例如下所示:

console.log(Qt.locale("en_US").name + ","+ Qt.locale("en_US").nativeCountryName); // en_US,United States
console.log(Qt.locale("zh_CN").name + ","+ Qt.locale("zh_CN").nativeCountryName); // zh_CN,中国
console.log(today.toLocaleDateString(Qt.locale("en_US"))); // Tuesday, March 23, 2021
console.log(today.toLocaleDateString(Qt.locale("zh_CN"))); // 2021年3月23日星期二
  • string md5(data) : 返回一串data的哈希值字符串

示例如下:

var str1 = new String("12345");
var str2 = new String("12346");
console.log(Qt.md5(str1)); // 827ccb0eea8a706c4c34a16891f84e7b
console.log(Qt.md5(str2)); // a3590023df66ac92ae35e3316026d17d
  • matrix4x4 matrix4x4(m11, real m12, real m13, real m14, real m21, real m22, real m23, real m24, real m31, real m32, real m33, real m34, real m41, real m42, real m43, real m44) : 返回一个Matrix4x4对象
  • bool openUrlExternally(target) : 通过外部应用程序中打开指定的目标URL。如果成功,则返回true,否则返回false。
  • point point(x, int y) : 返回一个point对象
  • string qsTr(sourceText, string disambiguation, int n) : 返回sourceText参数的翻译版本,比如 Text { text: qsTr("hello") }
  • quaternion quaternion(scalar, real x, real y, real z) : 返回一个四元数对象
  • rect rect(x, int y, int width, int height) : 返回一个矩形对象
  • color rgba(real red, real green, real blue, real alpha) : 返回一个rgba对象,参数都是0~1的数
  • size size(width, int height) : 返回一个size对象
  • color tint(baseColor, color tintColor) : 对baseColor颜色进行着色并返回,tintColor必须是透明的颜色,否则无法叠加.
  • vector2d vector2d(x, real y) : 返回一个vector2d对象
  • vector3d vector3d(x, real y, real z) : 返回一个vector3d对象
  • vector4d vector4d(x, real y, real z, real w) : 返回一个vector3d对象

比如,获取一个随机颜色:

color = Qt.rgba(Math.random(), Math.random(), Math.random(), 1); // 1表示不透明,  Math.random()表示返回0~1随机数

免责声明:文章转载自《7.qml-Qt对象》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇java.sql.SQLException: ORA-28040: 没有匹配的验证协议(12c或者12c rac)WinForm控件之【ProgressBar】下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JPS 命令详解

JPS 名称: jps - Java Virtual Machine Process Status Tool 命令用法: jps [options] [hostid]               options:命令选项,用来对输出格式进行控制               hostid:指定特定主机,可以是ip地址和域名, 也可以指定具体协议,端口。  ...

常用css样式

1:认识CSS   1.1:css简介,css全称是层叠样式表,Cascading style sheets   1.2:css的作用,主要是用于定义html内容在浏览器内的显示样式,如文字大小,颜色,字体加粗等     使用css样式的一个好处是通过定义某个样式,可以让不同的网页位置的字体有着统一的字体,字号或者颜色等   1.3:css代码语法    ...

基于ARM64的Qemu/KVM学习环境搭建

作者:pengdonglin137@163.com 在没有aarch64架构的开发板的情况下,可以使用Qemu来模拟一个支持KVM的AArch64位的host,然后再在其上运行一个开启KVM加速的Qemu虚拟机,如下图所示:   软件版本如下: 1: x86_64上运行的是ubuntu20.04 2:qemu版本是5.1.0,ubuntu16.04,内核版...

动态规划法-01背包问题

一 几个概念: 最优化问题:有n个输入,它的解由这n个输入的一个子集组成,这个子集必须满足某些事先给定的条件,这些条件称为约束条件,满足约束条件的解称为问题的可行解。满足约束条件的可行解可能不止一个,为了衡量这些可行解的优劣,事先给出一定的标准,这些标准通常以函数的形式给出,这些标准函数称为目标函数,使目标函数取得极值的可行解成为最优解,这类问题称为最优...

AE加载不同数据的方法(GeoDatabase空间数据管理)

先看一下GeoDatabase核心结构模型图:     1  工作空间工厂WorkspaceFactory对象    WorkspaceFactory是GeoDatabase的入口,是一个抽象类,拥有很多子类,例如SdeWorkspaceFactory, AccessWorkspaceFactory, ShapfileWorkspaceFactory ...

CLR寄宿(上) MSCOREE.DLL

CLR寄宿(上) MSCOREE.DLL托管代码调用非托管代码,.NET提供了P/Invoke(平台调用)方式,它作为.NET的基础出现在各类书籍和网络资源上,这里不再讨论。那么非托管代码如何去调用托管代码呢?我们知道,一个托管应用程序首先被操作系统启动,然后由操作系统调用CLR来托管该程序。那么.NET框架到底以什么方式让操作系统来认识它并且可以启动它呢...