zoukankan      html  css  js  c++  java
  • 7.qml-Qt对象

    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随机数

    人间有真情,人间有真爱。

    如果您喜欢这里,感觉对你有帮助,并且有多余的软妹币的话,不妨投个食吧,赞赏的时候,留下美句和你的博客地址哦~   戳这里看谁投食了


查看全文
  • 相关阅读:
    获取Android控件宽高
    Android面试题:大图加载,防止OOM
    Android面试题:讲一讲Glide的原理
    面试题:实现一个容器,提供两个方法,add,size;写两个线程,线程1添加10个元素到容器中,线程2实现监控元素的个数,当个数到5个时,线程2给出提示并结束
    Java线程中断的三种方法
    Java的四种引用:强引用、软引用,弱引用和虚引用
    Bellman-Ford(可解决负权边)--时间复杂度优化
    【Leetcode 动态规划、深度优先搜索】不同路径(62)、 不同路径 II(63)、不同路径 III(980)
    ElasticSearch scroll分页查询
    MySQL Myisam引擎和Innodb引擎的区别
  • 原文地址:https://www.cnblogs.com/lifexy/p/14579229.html
  • Copyright © 2011-2022 走看看