当前位置: 首页 > news >正文

QML学习笔记(九)QML的全局对象

前言:

在本小节中,我们将学习QML的全局对象。我们先回顾一下学基本数据类型时的代码:

    property var aColor: Qt.rgba(0.2, 0.3, 0.4, 0.5)property var aRect: Qt.rect(10, 10, 10, 10)property var aPoint: Qt.point(10, 10)property var aSize: Qt.size(10, 10)

可以看到,这里多处使用了“Qt.xxx”这样的写法,但此前我们还并不清楚这个是什么。现在我可以告诉你,它就是qml当中的的全局对象。

一、查阅帮助文档

我们查阅QML Global Object,并点击Qt object进入。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
它告诉我们,这是QML的一个类型,它包含一些实用函数、属性、枚举,我们可以在QML应用程序中使用它。
例如,它给出的一个例子:

Text {color: Qt.rgba(1, 0, 0, 1)text: Qt.md5("hello, world")}

我们可以使用Qt.rbga函数获取一个颜色的实例,也可以通过MD5哈希字符串来设置文本。

二、代码实践

在这里,我们将依次练习一些实践操作。
(1)新建一个QmlGlobalObject项目,并将上述代码复制过来,并添加居中和字体字号的代码。

import QtQuick 2.14
import QtQuick.Window 2.14Window {visible: truewidth: 640height: 480title: qsTr("The Qt Global Object")Text {anchors.centerIn: parentcolor: Qt.rgba(1, 0, 0, 1)text: Qt.md5("hello, world")font.pointSize: 20}
}

运行看下效果:
在这里插入图片描述

可以一看到,这是一串加密过的红色字符串,是文本“hello, world”的MD5加密结果,符合预期。

(2)我们在Text的下方添加一个矩形:

Rectangle{id: clickableRectIdwidth: 300height: 100color: "dodgerblue"anchors.bottom: parent.bottomMouseArea{anchors.fill: parentonClicked: {// Quit the applicationQt.quit();}}}

在这里插入图片描述
在点击矩形的槽函数中,使用了Qt.quit(),点击之后应用果然退出了。这下,我们掌握了如何退出应用程序的接口。
这里,我们对比一下QWidget中的方法:qApp->quit();
(3)我们尝试获取qt的字体字族列表。
先在顶部设置一个属性:

property var fonts: Qt.fontFamilies()

然后,我们在上一步的Qt.quit()后面添加代码,尝试打印出这些东西:

// Loop through the fonts
for(var i = 0; i < fonts.length; i++){console.log("[" + i + "]" + fonts[i])
}

在这里插入图片描述
可以看到,它能打印出310个字体字族名字,其中也包括中文的。
(4)尝试调用接口打开网址

// Open url externally
Qt.openUrlExternally("https://www.baidu.com")

在这里插入图片描述
果真能打开,当然,是调用浏览器的外部打开。
(5)打开文件
同理,我们也可以打开文件,包括图片和视频,但使用的是系统默认打开方式。效果图就不贴出来了,感兴趣可以尝试一下

// Open local files with the default program
Qt.openUrlExternally("file:///D:/propic/xxx.jpg")

(6)获取系统平台
我们还可以获取当前系统平台信息,是Windows、IOS,还是Linux。

// Capture plaform info
console.log("The current platform is:" + Qt.platform.os)

在这里插入图片描述
(7)属性绑定
上一节中,我们使用过这个东西,再回顾一下吧!

redRectId.height = Qt.binding(function(){return redRectId.width * 0.5})

三、总结

总之,Qt.这个全局对象可以帮我们做很多事情,不管是设置属性、获取信息,还是帮我们做一些打开操作,它都能轻松实现。
你可能困扰,怎么可能全部记住这些功能和接口?那自然是不可能的,但我们可以查阅帮助文档,尽可能了解Qt.全局对象的功能。并且实际开发的时候,我们一定是遇到问题,再去解决问题。现阶段,只要对它有一个初步认知,并且未来遇到某个问题,能下意识知道该使用Qt.全局变量即可。

http://www.dtcms.com/a/395874.html

相关文章:

  • element里的select自定义输入的时候,不用点击下拉框选中自定义输入,而是当焦点失去的时候自动赋值输入的内容
  • 链改2.0+港促会,携手赋能 Web3引企赴港!
  • C++第二篇:命名空间(namespace)
  • vcsa 重启服务
  • QT 两种库写法 LIBS += .a和LIBS += -L -l
  • 比斯特自动化|电动自行车电池点焊机的作用与使用
  • Django 模型与 ORM 全解析(一):从基础到实战的完整指南
  • NW955NW960美光固态闪存NW963NW971
  • iOS 26 软件兼容性大检查,哪些 App 出问题、API 变动要注意、旧功能不支持兼容性测试全流程
  • HarmonyOS NEXT互动卡片开发:从原理到实战的完整指南
  • 邪修实战系列(6)
  • Clover: 1靶场渗透
  • 智慧供水管网监测解决方案:实现压力、流量、水质数据集与监控
  • 深入理解Java虚拟机内存模型
  • 什么是缺陷检测?机器视觉表面缺陷检测从定义到实战方法,避开漏判误判
  • Svelte:编译时优化原理、与传统虚拟DOM框架的性能对比性能优化
  • 属性描述符
  • JavaWeb之JSP 快递管理与过滤器详解
  • 《MedChat智能医疗问答系统》项目介绍
  • 使用FastAPI和Docker部署机器学习模型:从开发到生产的最佳实践
  • Per-Tensor 量化和Per-Channel 量化
  • 执行bat任务栏有图标显示,执行pycharm64.exe就没有是什么原因
  • 【Docker项目实战】使用Docker部署wealth-tracker个人资产分析工具
  • LeapMotion_Demo演示
  • 智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
  • 面试技巧第四篇:嵌入式通信机制考点:消息队列、信号量与互斥锁
  • 面试八股:C语言的预处理和类型定义
  • 强化学习1.3 深度学习交叉熵方法
  • 用PowerBI的思想解决QuickBI文本无法动态配色问题
  • 逆向解析 1688 商品详情接口:自主构建 Sign 签名算法实战