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

Kdab QML (part9)自由缩放时钟

文章目录

  • Kdab QML (part9)自由缩放时钟
    • 代码
    • 详细解释
    • 运行截图

Kdab QML (part9)自由缩放时钟

代码

import QtQuick 2.15
import QtQuick.Window 2.15Window {id: rootwidth: 500height: 500visible: truecolor: "lightgrey"title: qsTr("Hello World")Item {property int _minSide: Math.min(root.width,root.height)x: 10 + (root.width - _minSide)/2y: 10 + (root.width - _minSide)/2width: _minSide - 20height: _minSide - 20scale: Math.min(width / background.sourceSize.width,height / background.sourceSize.height)transformOrigin: Item.TopLeftImage {id: backgroundsource: "background.png"}Image {id: smallArmsource: "smallArm.png"x:background.width/2 - width/2y:background.height/2 - 914transform: Rotation {origin.x: smallArm.width/2origin.y: 914RotationAnimation on angle {from: 0to: 360*2duration: 60000loops:Animation.Infinite}}}//--> slideImage {// The 1255 is the anchor point of the arm, measured in the file itselfid: largeArmsource: "largeArm.png"x: background.width/2 - width/2y: background.height/2 - 1255transform: Rotation {origin.x: largeArm.width/2origin.y: 1255angle: 90 // Likely a calculation from other properties//--> hide// Anngle above is just for the slides :-)RotationAnimation on angle {from:0to: 360*24 // 24 hours in a dayduration: 60000 // run through a complete day in one minute.loops: Animation.Infinite}//<-- hide}}//<-- slide}
}

详细解释

这是一个使用QtQuick 2.0编写的QML文件,用于创建一个图形界面元素。下面是每一行的解释:

  1. /*************************************************************************: 这是一个注释,通常用于提供关于代码版权和许可的信息。

  2. import QtQuick 2.0: 导入QtQuick 2.0模块,使得该QML文件可以使用QtQuick的功能和元素。

  3. Rectangle {: 开始定义一个矩形元素。

  4. id: root: 给这个矩形元素指定一个ID,以便在其他地方引用它。

  5. color: "lightgrey": 设置矩形的背景颜色为浅灰色。

  6. width: 500: 设置矩形的宽度为500个单位。

  7. height: 500: 设置矩形的高度为500个单位。

  8. Item {: 在矩形内部定义一个Item元素,这将是一个容器。

  9. property int _minSide: Math.min(root.width, root.height): 定义一个名为_minSide的属性,该属性计算并存储矩形的宽度和高度之间的较小值。

  10. x: 10 + (root.width - _minSide)/2: 设置Item元素的X坐标,将其放置在矩形内居中,但留出10个单位的边距。

  11. y: 10 + (root.height - _minSide)/2: 设置Item元素的Y坐标,将其放置在矩形内居中,但留出10个单位的边距。

  12. width: _minSide - 20: 设置Item元素的宽度,使其比矩形较小的一边小20个单位。

  13. height: _minSide - 20: 设置Item元素的高度,使其比矩形较小的一边小20个单位。

  14. scale: Math.min(width / background.sourceSize.width, height / background.sourceSize.height): 设置Item元素的缩放比例,以使背景图像适应Item元素的大小,同时保持纵横比。

  15. transformOrigin: Item.TopLeft: 设置变换的原点为左上角。

  16. Image {: 在Item元素内部定义一个Image元素,用于显示图像。

  17. id: background: 给该Image元素指定一个ID。

  18. source: "background.png": 设置图像的来源文件为"background.png"。

  19. Image {: 在Item元素内部定义另一个Image元素,这将用于显示另一图像。

  20. id: smallArm: 给该Image元素指定一个ID。

  21. source: "smallArm.png": 设置图像的来源文件为"smallArm.png"。

  22. x: background.width/2 - width/2: 设置图像的X坐标,使其水平居中在Item元素内。

  23. y: background.height/2 - 914: 设置图像的Y坐标,其中914是图像的锚点(在文件本身中测量得到的)。

  24. transform: Rotation {: 在smallArm Image元素内部定义一个Rotation元素,用于旋转图像。

  25. origin.x: smallArm.width/2: 设置旋转的原点X坐标为图像宽度的一半。

  26. origin.y: 914: 设置旋转的原点Y坐标为914。

  27. RotationAnimation on angle {: 在Rotation元素内部定义一个RotationAnimation元素,用于对图像进行角度旋转动画。

  28. from: 0: 设置动画的起始角度为0度。

  29. to: 360*2: 设置动画的结束角度为720度,表示两个完整的旋转周期。

  30. duration: 60000: 设置动画的持续时间为60000毫秒(即60秒)。

  31. loops: Animation.Infinite: 设置动画循环次数为无限循环。

  32. }: 结束角度旋转动画的定义。

  33. }: 结束smallArm Image元素的定义。

  34. Image {: 在Item元素内部定义另一个Image元素,用于显示另一图像,这是大臂的图像。

  35. id: largeArm: 给该Image元素指定一个ID。

  36. source: "largeArm.png": 设置图像的来源文件为"largeArm.png"。

  37. x: background.width/2 - width/2: 设置图像的X坐标,使其水平居中在Item元素内。

  38. y: background.height/2 - 1255: 设置图像的Y坐标,其中1255是图像的锚点(在文件本身中测量得到的)。

  39. transform: Rotation {: 在largeArm Image元素内部定义一个Rotation元素,用于旋转图像。

  40. origin.x: largeArm.width/2: 设置旋转的原点X坐标为图像宽度的一半。

  41. origin.y: 1255: 设置旋转的原点Y坐标为1255。

  42. angle: 90: 设置图像的初始旋转角度为90度。

  43. RotationAnimation on angle {: 在Rotation元素内部定义一个RotationAnimation元素,用于对图像进行角度旋转动画。

  44. from: 0: 设置动画的起始角度为0度。

  45. to: 360*24: 设置动画的结束角度为8640度,表示一天内的完整旋转。

  46. duration: 60000: 设置动画的持续时间为60000毫秒(即60秒),使得图像在一分钟内完成一天的旋转。

  47. loops: Animation.Infinite: 设置动画循环次数为无限循环。

  48. }: 结束角度旋转动画的定义。

  49. }: 结束largeArm Image元素的定义。

  50. }: 结

运行截图

image-20230824170302608## 运行截图

[外链图片转存中…(img-IS7gRfti-1692867979984)]

image-20230824170336747

每篇附一张高清壁纸,记得点赞收藏哦
在这里插入图片描述

相关文章:

Kdab QML (part9)自由缩放时钟

文章目录 Kdab QML (part9)自由缩放时钟代码详细解释运行截图 Kdab QML (part9)自由缩放时钟 代码 import QtQuick 2.15 import QtQuick.Window 2.15Window {id: rootwidth: 500height: 500visible: truecolor: "lightgrey"title: qsTr("Hello World")It…...

Java网络编程(二)经典案例[粘包拆包]

粘包拆包 概述 TCP是面向流的协议,TCP在网络上传输的数据就是一连串的数据,完全没有分界线。 TCP协议的底层并不了解上层业务的具体定义,它会根据TCP缓冲区的实际情况进行包的划分。 在业务层面认为一个完整的包可能会被TCP拆分成多个小包进行发送,也可能把多个小的包封装成一…...

无分布式锁的ID生成

起因 TEAM GARDEN 本来ID是自增的&#xff0c;后面发现自增ID比较麻烦&#xff0c;有问题&#xff1a; 不可控的间隔&#xff1a; 如果你在插入数据时&#xff0c;中途删除了一些行&#xff0c;导致自增的ID出现间隔&#xff0c;那么新插入的行会填充这些间隔&#xff0c;可能…...

X2000 Linux UVC

参考文档&#xff1a;\doc\开发使用说明\USB使用说明文档\设备\USB_UVC\xburst2\USB_UVC.pdf 一、内核添加USB UVC功能 1、确定所用dts文件 进入到/tools/iconfigtool/IConfigToolApp/路径下&#xff0c;执行./IConfigTool 选择config文件&#xff0c;查看kernel默认配置 配…...

HCIP-OpenStack组件之neutron

neutron&#xff08;ovs、ovn&#xff09; OVS OVS(Open vSwitch)是虚拟交换机&#xff0c;遵循SDN(Software Defined Network&#xff0c;软件定义网络)架构来管理的。 OVS介绍参考&#xff1a;https://mp.weixin.qq.com/s?__bizMzAwMDQyOTcwOA&mid2247485088&idx1…...

数学建模-常见算法(3)

KMP算法&#xff08;Knuth-Morris-Pratt算法&#xff09; KMP算法是一种用于字符串匹配的算法&#xff0c;它的时间复杂度为O(mn)。该算法的核心思想是在匹配失败时&#xff0c;利用已经匹配的信息&#xff0c;减少下一次匹配的起始位置。 def kmp(text, pattern): n len(…...

缓存的设计方式

问题情况&#xff1a; 当有大量的请求到内部系统时&#xff0c;若每一个请求都需要我们操作数据库&#xff0c;例如查询操作&#xff0c;那么对于那种数据基本不怎么变动的数据来说&#xff0c;每一次都去数据库里面查询&#xff0c;是很消耗我们的性能 尤其是对于在海量数据…...

CH02_重构的原则(什么是重构、为什么重构、何时重构)

什么是重构 重构&#xff08;名词&#xff09;&#xff1a;对软件内部结构的一种调整&#xff0c;目的是在不改变软件可观察行为的前提下&#xff0c;提高其可理解性&#xff0c;降低其修改成本。 重构&#xff08;动词&#xff09;&#xff1a;使用一系列重构手法&#xff0…...

26. 删除有序数组中的重复项(简单系列)

给你一个 升序排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元素的数量为 k &#xff0c;你需要做…...

【linux】基本指令(二)【man、echo、cat、cp】

目录 一、man指令二、echo指令三、cat指令二、cp指令一些常见快捷键 一、man指令 Linux的命令有很多参数&#xff0c;我们不可能全记住&#xff0c;可以通过查看联机手册获取帮助。访问Linux手册页的命令是 man 语法: man [选项] 命令 常用选项 1.-k 根据关键字搜索联机帮助 2…...

【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...

全文下载链接&#xff1a;http://tecdat.cn/?p23544 在本文中&#xff0c;长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络&#xff0c;能够学习长期依赖关系&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 本文使用降雨量数据&#xf…...

2023年7月京东空气净化器行业品牌销售排行榜(京东运营数据分析)

随着科技发展&#xff0c;智能家具在日常生活中出现的频率越来越高&#xff0c;许多曾经不被关注的家电也出现在其中&#xff0c;包括近年来逐渐兴起的空气净化器。伴随人们对自身健康的重视度越来越高&#xff0c;作为能够杀灭空气污染物、有效提高空气清洁度的产品&#xff0…...

原生小案例:如何使用HTML5 Canvas构建画板应用程序

使用HTML5 Canvas构建绘图应用是在Web浏览器中创建交互式和动态绘图体验的绝佳方式。HTML5 Canvas元素提供了一个绘图表面&#xff0c;允许您操作像素并以编程方式创建各种形状和图形。本文将为您提供使用HTML5 Canvas创建绘图应用的概述和指导。此外&#xff0c;它还将通过解释…...

Electron 报gpu_process_host.cc(951)] GPU process launch faile错误

解决方法&#xff0c;在入口js文件中&#xff0c;添加如下代码: app.commandLine.appendSwitch(no-sandbox)...

每天一分享#读up有感#

不知道开头怎么写&#xff0c;想了一下&#xff0c;要不&#xff0c;就这样吧&#xff0c;开头也就写完 今日分享 分享一博主的分享——https://blog.csdn.net/zhangay1998/article/details/121736687 全程高能&#xff0c;大佬就diao&#xff0c;一鸣惊人、才能卓越、名扬四…...

threejs贴图系列(一)canvas贴图

threejs不仅支持各种texture的导入生成贴图&#xff0c;还可以利用canvas绘制图片作为贴图。这就用到了CanvasTexture&#xff0c;它接受一个canas对象。只要我们绘制好canvas&#xff0c;就可以作为贴图了。这里我们利用一张图片来实现这个效果。 基础代码&#xff1a; impo…...

taro react/vue h5 中的上传input onchange 值得区别

<inputclassNamebase-input-file-h5typefileacceptimage/*capturecameraonChange{onChangeInput} />1、taro3react 2、taro3vue3...

(AcWing) 任务安排(I,II,III)

任务安排I: 有 N 个任务排成一个序列在一台机器上等待执行&#xff0c;它们的顺序不得改变。 机器会把这 N 个任务分成若干批&#xff0c;每一批包含连续的若干个任务。 从时刻 0 开始&#xff0c;任务被分批加工&#xff0c;执行第 i 个任务所需的时间是 Ti。 另外&#x…...

Excel筛选后复制粘贴不连续问题的解决

一直以来都没好好正视这个问题认真寻求解决办法 终于还是被需求逼出来了&#xff0c;懒人拯救世界[doge] 一共找到两个方法&#xff0c;个人比较喜欢第二种&#xff0c;用起来很方便 Way1&#xff1a;CtrlG定位可见单元格后使用vlookup解决&#xff08;感觉不定位直接公式向下…...

【SCSS变量】$ | | var | @for | @include | @function | @each 等常用方法使用

SCSS优点&#xff1a;编写清晰、无冗余、语义化的CSS&#xff0c;减少不必要的重复工作 1、变量声明&#xff08;$&#xff09;和使用2、使用 & 代替父元素3、在HTML中使用 :style{--name: 动态值}自定义属性&#xff0c;在SCSS中用var(--name)函数绑定动态变量值&#xff…...

手把手教你用Vector CANape创建第一个AUTOSAR ECU测量工程(附A2L文件配置避坑点)

从零构建AUTOSAR ECU测量工程&#xff1a;Vector CANape实战指南与A2L文件深度解析 在汽车电子开发领域&#xff0c;ECU数据测量与标定是功能验证和性能优化不可或缺的环节。作为Vector工具链中的核心组件&#xff0c;CANape凭借其强大的实时数据采集和分析能力&#xff0c;已成…...

小白程序员必看:收藏这份AI大模型学习指南,抢占高薪新赛道!

文章指出&#xff0c;随着AI技术的飞速发展&#xff0c;传统后端开发面临挑战&#xff0c;而懂AI的复合型人才成为稀缺资源。学校教育与企业需求存在错位&#xff0c;导致大学生毕业时所学与企业所需不符。AI智能应用开发、大模型开发等方向成为高薪热门领域&#xff0c;懂AI的…...

MSP430F5438 RTC模块配置与低功耗应用实战指南

1. 项目概述与核心价值最近在整理一个老项目的资料&#xff0c;翻到了当年用TI的MSP430F5438做的一个数据记录仪。这个项目里&#xff0c;实时时钟&#xff08;RTC&#xff09;模块的稳定性和低功耗配置是关键&#xff0c;当时为了搞定它&#xff0c;可没少花功夫。今天就把关于…...

i.MX6ULL LCD驱动适配实战:从设备树到时序调试全解析

1. 项目概述与核心价值最近在搞一个基于i.MX6ULL的工控HMI项目&#xff0c;屏幕显示是绕不开的一环。市面上很多教程要么只讲Framebuffer应用&#xff0c;要么直接给个现成的设备树文件让你照着改&#xff0c;至于里面的参数怎么来的、屏幕初始化序列怎么配&#xff0c;往往一笔…...

用Logisim搞定计组课设:手把手教你搭建单周期MIPS CPU(附完整电路图)

从零构建单周期MIPS CPU&#xff1a;Logisim实战指南与避坑手册 当计算机组成原理的课程设计任务书发到手中时&#xff0c;许多同学面对"用Logisim实现MIPS CPU"的要求往往感到无从下手。本文将用工程师的视角&#xff0c;带你完整走通单周期CPU的设计全流程&#xf…...

为什么顶级作曲家都在弃用Shazam转投Perplexity?——基于127万条音乐查询日志的权威对比报告

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity音乐知识搜索的崛起背景与行业影响 近年来&#xff0c;音乐产业正经历从“内容分发”向“知识理解”的范式迁移。传统搜索引擎在处理音乐相关查询时&#xff0c;常受限于语义模糊性——例如用户输入…...

别让“AI味”代码毁了你的项目:一份AI生成代码的质量评估与防御指南

别让“AI味”代码毁了你的项目&#xff1a;一份AI生成代码的质量评估与防御指南 前段时间&#xff0c;团队里一个新人在周会上展示了他用 AI 辅助完成的一个支付模块。代码跑通了&#xff0c;测试用例全绿&#xff0c;乍一看没什么问题。但我顺手点开一个 Service 层方法&#…...

ZYNQ7020笔记:MIO、EMIO、GPIO的区别及应用

ZYNQ 7020 之所以强大&#xff0c;在于它把ARM Cortex-A9处理器系统&#xff08;PS&#xff09;和FPGA逻辑&#xff08;PL&#xff09;集成在一个芯片里。而连接PS与外部世界的&#xff0c;就是MIO、EMIO、GPIO。很多初学者分不清它们的区别&#xff0c;今天这篇文章就用最直白…...

安卓用户专属福利:免费开源工具一键搞定.m3u8.sqlite视频提取与合并(附TS转MP4方法)

安卓用户专属&#xff1a;零门槛实现.m3u8.sqlite视频提取与格式转换全攻略 每次在手机上缓存了课程视频&#xff0c;却发现文件格式无法直接播放&#xff1f;作为安卓用户&#xff0c;你可能经常遇到.m3u8.sqlite这种特殊缓存格式的困扰。本文将为你揭秘这类文件的本质&#x…...

上机器人真能省人吗,先看这几个车间实情

就以我自己的视角&#xff0c;给同样想推动自动化改造的工厂管理者们&#xff0c;聊聊这里面的门道和实在账。很多人问我&#xff0c;你们做自动化集成的是不是就爱忽悠老板砸钱上机器人&#xff1f;听着光鲜&#xff0c;最后落灰的“铁疙瘩”我见得多了。我是自动化老厂的二代…...