031-第三代软件开发-屏幕保护
第三代软件开发-屏幕保护
文章目录
- 第三代软件开发-屏幕保护
- 项目介绍
- 屏幕保护
关键字:
Qt、
Qml、
MediaPlayer、
VideoOutput、
function
项目介绍
欢迎来到我们的 QML & C++ 项目!这个项目结合了 QML(Qt Meta-Object Language)和 C++ 的强大功能,旨在开发出色的用户界面和高性能的后端逻辑。
在项目中,我们利用 QML 的声明式语法和可视化设计能力创建出现代化的用户界面。通过直观的编码和可重用的组件,我们能够迅速开发出丰富多样的界面效果和动画效果。同时,我们利用 QML 强大的集成能力,轻松将 C++ 的底层逻辑和数据模型集成到前端界面中。
在后端方面,我们使用 C++ 编写高性能的算法、数据处理和计算逻辑。C++ 是一种强大的编程语言,能够提供卓越的性能和可扩展性。我们的团队致力于优化代码,减少资源消耗,以确保我们的项目在各种平台和设备上都能够高效运行。
无论您是对 QML 和 C++ 开发感兴趣,还是需要我们为您构建复杂的用户界面和后端逻辑,我们都随时准备为您提供支持。请随时联系我们,让我们一同打造现代化、高性能的 QML & C++ 项目!
重要说明☝
☀该专栏在第三代软开发更新完将涨价
屏幕保护
之前在Windows平台上是咋搞的,是写成了一个单独的程序了,启动后默认在后台运行,试试监测用户操作行为,如果一定时间没有操作,就弹出显示屏幕保护内容。这个方法是因为我们的主程序不是自己写的,所以,哈哈哈,只能曲线救国,
现在的程序每个字符都是自己手撸出来的,所以直接就在程序中实现了,当然,前面【第三代软件开发-实现需求长时间未操作返回登录界面】以及实现了逻辑上的控制了,今天咱们这里主要将的是屏幕保护的内容,目前我们屏幕保护内容就是循环播放一个视频,所以是线上没有啥难度,直接上代码:
Rectangle
{/*屏幕保护界面*/id:rect_lockScreenanchors.fill: parentcolor: "black"visible: falseMediaPlayer{id:media_logosource: UserProfile.logoVideoPath // 绝对路径muted: trueloops: MediaPlayer.Infinite}VideoOutput{id:out_putanchors.fill: parentsource: media_logo}onVisibleChanged:{if(visible)media_logo.play()elsemedia_logo.stop()}Image {width: 232height: 262anchors.left: parent.leftanchors.top:parent.topanchors.margins: 50source: "qrc:/Logo/T_Resource/T_Image/Logo/Turing_logo.png"}
}
/**锁屏*/
function lockScreen()
{if(tabview_login.currentIndex == 1)tab_userManahement.item.closePopup()rect_lockScreen.visible = true
}
/**恢复*/
function unLockScreen()
{rect_lockScreen.visible = falsetabview_login.currentIndex = 0
}
这段代码是一个QML(Qt Meta-Object Language)代码片段,用于实现屏幕保护界面和相关功能。下面是对代码的解释:
Rectangle:定义一个矩形组件作为屏幕保护界面的背景。设置id为"rect_lockScreen",填充父级元素、颜色为黑色,并初始时不可见。
MediaPlayer:定义一个媒体播放器组件,设置id为"media_logo"。使用UserProfile.logoVideoPath作为视频的绝对路径(需要提前在UserProfile中定义),设置静音(muted: true)并循环播放视频(loops: MediaPlayer.Infinite)。
VideoOutput:定义一个视频输出组件,设置id为"out_put"。将该组件的大小设置为填充父级元素,并将其源指定为media_logo。
onVisibleChanged:当rect_lockScreen可见性发生变化时触发的信号处理函数。如果可见,则调用media_logo.play()开始播放视频;否则调用media_logo.stop()停止播放视频。
Image:定义一个图像组件,显示一个logo图片。设置宽度为232、高度为262,左上角锚点为父级元素的左上角,设置外边距为50。图像的源文件是"Turing_logo.png"。
lockScreen()函数:用于触发锁屏操作。如果tabview_login的currentIndex属性为1(即当前选项卡为第二个选项卡),则关闭tab_userManahement.item的弹出窗口,然后将rect_lockScreen的可见性设置为true以显示屏幕保护界面。
unLockScreen()函数:用于触发解锁操作。将rect_lockScreen的可见性设置为false以隐藏屏幕保护界面,并将tabview_login的currentIndex属性设置为0,将当前选项卡切换回第一个选项卡。
其实还有更简单方法,但是后期你真的开发的时候,可能就会发现了问题了哦,这里先买个关子吧,和面咱们还要写一个简单的视频播放器在聊
Video {id: videowidth : 800height : 600source: "video.avi"MouseArea {anchors.fill: parentonClicked: {video.play()}}focus: trueKeys.onSpacePressed: video.playbackState == MediaPlayer.PlayingState ? video.pause() : video.play()Keys.onLeftPressed: video.seek(video.position - 5000)Keys.onRightPressed: video.seek(video.position + 5000)}
这段代码是一个QML(Qt Meta-Object Language)代码片段,用于创建一个视频播放器组件。下面是对代码的解释:
Video:定义一个视频组件,设置id为"video"。该组件的宽度为800、高度为600,并设置视频源为"video.avi"。
MouseArea:定义一个鼠标区域组件,填充父级元素大小。当鼠标在该区域内点击时,触发onClicked信号处理函数。其中,调用video.play()方法开始播放视频。
focus:设置视频组件获取焦点,以便按键事件可以被该组件接收。
Keys.onSpacePressed:当空格键被按下时触发的信号处理函数。判断当前视频播放状态(playbackState),如果是MediaPlayer.PlayingState(正在播放状态),则调用video.pause()方法暂停播放;否则调用video.play()方法继续播放。
Keys.onLeftPressed:当左箭头键被按下时触发的信号处理函数。调用video.seek()方法将视频跳转到当前位置减去5000毫秒的位置,实现向后快进5秒的效果。
Keys.onRightPressed:当右箭头键被按下时触发的信号处理函数。调用video.seek()方法将视频跳转到当前位置加上5000毫秒的位置,实现向前快进5秒的效果。

相关文章:
031-第三代软件开发-屏幕保护
第三代软件开发-屏幕保护 文章目录 第三代软件开发-屏幕保护项目介绍屏幕保护 关键字: Qt、 Qml、 MediaPlayer、 VideoOutput、 function 项目介绍 欢迎来到我们的 QML & C 项目!这个项目结合了 QML(Qt Meta-Object Language&#…...
Ubuntu 22.04 更新完内核重启卡在 grub 命令行解决办法
倒霉伊始 升级内核过程中出现如下警告,然后重启引导失败: Warning: os-prober will not be executed to detect other bootable partitions 屏幕内容如下: GNU GRUB version 2.06Minimal BASH-like line editing is supported. For the fir…...
Stream流式处理
Stream流式处理: 建立在Lambda表达式基础上的多数据处理技术。 可以对集合进行迭代、去重、筛选、排序、聚合等处理,极大的简化了代码量。 Stream常用方法 Stream流对象的五种创建方式 //基于数组 String[] arr {"a","b","c…...
ROG STRIX GS-AX5400 使用笔记
1. 技术支持 咨询京东(因为是在京东购买的) 2. 增强信号设置 Note:关于设置的具体步骤,请参考教程《华硕路由器地区如何改成澳大利亚》。 操作路径:打开主页<192.168.50.1> ⇒ 输入用户名和密码后选择登录 ⇒ …...
【刷题-PTA】堆栈模拟队列(代码+动态图解)
【刷题-PTA】堆栈模拟队列(代码动态图解) 文章目录 【刷题-PTA】堆栈模拟队列(代码动态图解)题目输入格式:输出格式:输入样例:输出样例: 分析题目区分两栈解题思路伪代码动图演示代码测试 题目 题目描述 : 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。 …...
FileUpload控件上传文件时出现 不支持给定路径的格式.的解决方法
正常代码,部署到server 2012时,在上传音频mp3文件时,显示错误“不支持给定路径的格式”,上传控件使用FileUpload控件: 因为程序之前是正常的,因此应该不是程序的问题。 上传时,发现在选择文件时…...
这两天的一些碎碎念
一直以来我都不算是一个非常热爱运维岗位的一个人,其实本行工作对于我来说只是一个工作。运维的广度很大,说什么工作了7年了,可最终总感觉还曾是一窍不通。 什么shell啊,什么python啊,什么大数据啊,7年里&a…...
Unity 最新DOTS系列之《Baking与Baker的详解》
Unity DOTS Baking与Baker详解 最近DOTS终于发布了正式的版本, 我们来分享一下DOTS里面Baking 与Baker的关键概念,方便大家上手学习掌握Unity DOTS开发。 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀&…...
【Tensorflow 2.12 简单智能商城商品推荐系统搭建】
Tensorflow 2.12 简单智能商城商品推荐系统搭建 前言架构数据召回排序部署调用结尾 前言 基于 Tensorflow 2.12 搭建一个简单的智能商城商品推荐系统demo~ 主要包含6个部分,首先是简单介绍系统架构,接着是训练数据收集、处理,然后是召回模型、…...
Unity 单例-接口模式
单例-接口模式 使用接口方式实现的单例可以继承其它类,更加方便 using System.Collections; using System.Collections.Generic; using UniRx; using UniRx.Triggers; using UnityEngine; namespace ZYF {public interface ISingleton<TMono> where TMono : M…...
【Java 进阶篇】Java XML解析:从入门到精通
XML(可扩展标记语言)是一种常用的数据格式,用于存储和交换数据。在Java中,XML解析是一项重要的任务,它允许您从XML文档中提取和操作数据。本篇博客将从基础开始,详细介绍如何在Java中解析XML文档࿰…...
【图像配准】Canny边缘检测+模板配准红外可见光双路数据
研究目的 最近在做无人机遥感红外和可见光双路数据配准,由于红外相机视野范围较小,因此配准的目的主要是在可见光的视野范围内,裁剪出红外图像对应的部分,同时,保持可见光的高分辨率不变。 本文思路 本文尝试使用Ca…...
关于单机流程编排技术——docker compose安装使用的问题
最近在学习docker相关的东西,当我在docker上部署了一个nest应用,其中该应用中依赖了一个基于mysql镜像的容器,一个基于redis镜像的容器。那我,当我进行部署上线时,在启动nest容器时,必须保证redis容器和mys…...
Google Chrome的新“IP保护”功能将隐藏用户的IP地址
导语:在保护用户隐私方面,Google Chrome正在测试一项名为“IP保护”的新功能。通过使用代理服务器掩盖用户的IP地址,这项功能能够增强用户的隐私保护。在意识到IP地址可能被用于秘密追踪后,Google希望在确保用户隐私的同时&#x…...
做机器视觉工程师,苏州德创能不能去工作?
每一家公司都有自身特点,同时也每一家都有自身的bug。 苏州德创作为美国康耐视Cognex产品在华东最大的代理商,也是康耐视外包团队。那么苏州德创有哪些业务构成,业务的构成也是其招聘的主要人员的方向。 设备视觉供应商,如卓越&…...
交换机基础(二):VLAN 基础知识
一、VLAN 基础知识 虚拟局域网 (Virtual Local Area Network,VLAN) 是一种将局域网设 备从逻辑上划分成一个个网段,从而实现虚拟工作组的数据交换技术。 这一技术主要应用于3层交换机和路由器中,但主流应用还是在3层交换机中。 VLAN 是基于物理网络上构建…...
一个基于Vue3搭建的低代码数据可视化开发平台
JNPF是一个Vue3搭建的低代码数据可视化开发平台,将图表或页面元素封装为基础组件,无需编写代码即可完成业务需求。 在JNPF中,至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端UI等组件,这种情况下我们避免了重…...
经验风险最小化与结构风险最小化:优化机器学习模型的两种方法
随着大数据时代的到来,机器学习在各个领域中的应用越来越广泛。然而,在构建机器学习模型时,我们面临着两个主要的挑战:经验风险最小化和结构风险最小化。本文将深入探讨这两种方法,并分析它们在优化机器学习模型中的作…...
Java泛型中的问号是什么意思
通配符概念 因为 List 是泛型类,为了 表示各种泛型 List 的父类,可以使用类型通配符,类型通配符使用问号(?)表示,将一个问号当做类型元素传递个 List,可以表示为 List<?>,意思是 元素类型未知的 List…...
粤嵌实训医疗项目day02(Vue + SpringBoot)
目录 一、创建vue项目并运行 二、vue-cli中的路由使用 三、element-ui框架、实现页面布局以及vue-路由 四、前端登录页面 五、user登录后端接口完善【后端】 六、user登录前端-请求工具-请求发起【前端】 七、请求的跨域-访问策略 八、完善项目的页面布局、导航菜单以及…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案
JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停 1. 安全点(Safepoint)阻塞 现象:JVM暂停但无GC日志,日志显示No GCs detected。原因:JVM等待所有线程进入安全点(如…...
Linux部署私有文件管理系统MinIO
最近需要用到一个文件管理服务,但是又不想花钱,所以就想着自己搭建一个,刚好我们用的一个开源框架已经集成了MinIO,所以就选了这个 我这边对文件服务性能要求不是太高,单机版就可以 安装非常简单,几个命令就…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
图解JavaScript原型:原型链及其分析 | JavaScript图解
忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...
