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

031-第三代软件开发-屏幕保护

头图

第三代软件开发-屏幕保护

文章目录

  • 第三代软件开发-屏幕保护
    • 项目介绍
    • 屏幕保护

关键字: QtQmlMediaPlayerVideoOutputfunction

项目介绍

欢迎来到我们的 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)代码片段,用于实现屏幕保护界面和相关功能。下面是对代码的解释:

  1. Rectangle:定义一个矩形组件作为屏幕保护界面的背景。设置id为"rect_lockScreen",填充父级元素、颜色为黑色,并初始时不可见。

  2. MediaPlayer:定义一个媒体播放器组件,设置id为"media_logo"。使用UserProfile.logoVideoPath作为视频的绝对路径(需要提前在UserProfile中定义),设置静音(muted: true)并循环播放视频(loops: MediaPlayer.Infinite)。

  3. VideoOutput:定义一个视频输出组件,设置id为"out_put"。将该组件的大小设置为填充父级元素,并将其源指定为media_logo。

  4. onVisibleChanged:当rect_lockScreen可见性发生变化时触发的信号处理函数。如果可见,则调用media_logo.play()开始播放视频;否则调用media_logo.stop()停止播放视频。

  5. Image:定义一个图像组件,显示一个logo图片。设置宽度为232、高度为262,左上角锚点为父级元素的左上角,设置外边距为50。图像的源文件是"Turing_logo.png"。

  6. lockScreen()函数:用于触发锁屏操作。如果tabview_login的currentIndex属性为1(即当前选项卡为第二个选项卡),则关闭tab_userManahement.item的弹出窗口,然后将rect_lockScreen的可见性设置为true以显示屏幕保护界面。

  7. 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)代码片段,用于创建一个视频播放器组件。下面是对代码的解释:

  1. Video:定义一个视频组件,设置id为"video"。该组件的宽度为800、高度为600,并设置视频源为"video.avi"。

  2. MouseArea:定义一个鼠标区域组件,填充父级元素大小。当鼠标在该区域内点击时,触发onClicked信号处理函数。其中,调用video.play()方法开始播放视频。

  3. focus:设置视频组件获取焦点,以便按键事件可以被该组件接收。

  4. Keys.onSpacePressed:当空格键被按下时触发的信号处理函数。判断当前视频播放状态(playbackState),如果是MediaPlayer.PlayingState(正在播放状态),则调用video.pause()方法暂停播放;否则调用video.play()方法继续播放。

  5. Keys.onLeftPressed:当左箭头键被按下时触发的信号处理函数。调用video.seek()方法将视频跳转到当前位置减去5000毫秒的位置,实现向后快进5秒的效果。

  6. Keys.onRightPressed:当右箭头键被按下时触发的信号处理函数。调用video.seek()方法将视频跳转到当前位置加上5000毫秒的位置,实现向前快进5秒的效果。


博客签名2021

相关文章:

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. 技术支持 咨询京东&#xff08;因为是在京东购买的&#xff09; 2. 增强信号设置 Note&#xff1a;关于设置的具体步骤&#xff0c;请参考教程《华硕路由器地区如何改成澳大利亚》。 操作路径&#xff1a;打开主页<192.168.50.1> ⇒ 输入用户名和密码后选择登录 ⇒ …...

【刷题-PTA】堆栈模拟队列(代码+动态图解)

【刷题-PTA】堆栈模拟队列(代码动态图解) 文章目录 【刷题-PTA】堆栈模拟队列(代码动态图解)题目输入格式:输出格式:输入样例:输出样例: 分析题目区分两栈解题思路伪代码动图演示代码测试 题目 题目描述 : 设已知有两个堆栈S1和S2&#xff0c;请用这两个堆栈模拟出一个队列Q。 …...

FileUpload控件上传文件时出现 不支持给定路径的格式.的解决方法

正常代码&#xff0c;部署到server 2012时&#xff0c;在上传音频mp3文件时&#xff0c;显示错误“不支持给定路径的格式”&#xff0c;上传控件使用FileUpload控件&#xff1a; 因为程序之前是正常的&#xff0c;因此应该不是程序的问题。 上传时&#xff0c;发现在选择文件时…...

这两天的一些碎碎念

一直以来我都不算是一个非常热爱运维岗位的一个人&#xff0c;其实本行工作对于我来说只是一个工作。运维的广度很大&#xff0c;说什么工作了7年了&#xff0c;可最终总感觉还曾是一窍不通。 什么shell啊&#xff0c;什么python啊&#xff0c;什么大数据啊&#xff0c;7年里&a…...

Unity 最新DOTS系列之《Baking与Baker的详解》

Unity DOTS Baking与Baker详解 最近DOTS终于发布了正式的版本, 我们来分享一下DOTS里面Baking 与Baker的关键概念&#xff0c;方便大家上手学习掌握Unity DOTS开发。 对惹&#xff0c;这里有一个游戏开发交流小组&#xff0c;希望大家可以点击进来一起交流一下开发经验呀&…...

【Tensorflow 2.12 简单智能商城商品推荐系统搭建】

Tensorflow 2.12 简单智能商城商品推荐系统搭建 前言架构数据召回排序部署调用结尾 前言 基于 Tensorflow 2.12 搭建一个简单的智能商城商品推荐系统demo~ 主要包含6个部分&#xff0c;首先是简单介绍系统架构&#xff0c;接着是训练数据收集、处理&#xff0c;然后是召回模型、…...

Unity 单例-接口模式

单例-接口模式 使用接口方式实现的单例可以继承其它类&#xff0c;更加方便 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&#xff08;可扩展标记语言&#xff09;是一种常用的数据格式&#xff0c;用于存储和交换数据。在Java中&#xff0c;XML解析是一项重要的任务&#xff0c;它允许您从XML文档中提取和操作数据。本篇博客将从基础开始&#xff0c;详细介绍如何在Java中解析XML文档&#xff0…...

【图像配准】Canny边缘检测+模板配准红外可见光双路数据

研究目的 最近在做无人机遥感红外和可见光双路数据配准&#xff0c;由于红外相机视野范围较小&#xff0c;因此配准的目的主要是在可见光的视野范围内&#xff0c;裁剪出红外图像对应的部分&#xff0c;同时&#xff0c;保持可见光的高分辨率不变。 本文思路 本文尝试使用Ca…...

关于单机流程编排技术——docker compose安装使用的问题

最近在学习docker相关的东西&#xff0c;当我在docker上部署了一个nest应用&#xff0c;其中该应用中依赖了一个基于mysql镜像的容器&#xff0c;一个基于redis镜像的容器。那我&#xff0c;当我进行部署上线时&#xff0c;在启动nest容器时&#xff0c;必须保证redis容器和mys…...

Google Chrome的新“IP保护”功能将隐藏用户的IP地址

导语&#xff1a;在保护用户隐私方面&#xff0c;Google Chrome正在测试一项名为“IP保护”的新功能。通过使用代理服务器掩盖用户的IP地址&#xff0c;这项功能能够增强用户的隐私保护。在意识到IP地址可能被用于秘密追踪后&#xff0c;Google希望在确保用户隐私的同时&#x…...

做机器视觉工程师,苏州德创能不能去工作?

每一家公司都有自身特点&#xff0c;同时也每一家都有自身的bug。 苏州德创作为美国康耐视Cognex产品在华东最大的代理商&#xff0c;也是康耐视外包团队。那么苏州德创有哪些业务构成&#xff0c;业务的构成也是其招聘的主要人员的方向。 设备视觉供应商&#xff0c;如卓越&…...

交换机基础(二):VLAN 基础知识

一、VLAN 基础知识 虚拟局域网 (Virtual Local Area Network,VLAN) 是一种将局域网设 备从逻辑上划分成一个个网段&#xff0c;从而实现虚拟工作组的数据交换技术。 这一技术主要应用于3层交换机和路由器中&#xff0c;但主流应用还是在3层交换机中。 VLAN 是基于物理网络上构建…...

一个基于Vue3搭建的低代码数据可视化开发平台

JNPF是一个Vue3搭建的低代码数据可视化开发平台&#xff0c;将图表或页面元素封装为基础组件&#xff0c;无需编写代码即可完成业务需求。 在JNPF中&#xff0c;至少包含表单建模、流程设计、报表可视化、代码生成器、系统管理、前端UI等组件&#xff0c;这种情况下我们避免了重…...

经验风险最小化与结构风险最小化:优化机器学习模型的两种方法

随着大数据时代的到来&#xff0c;机器学习在各个领域中的应用越来越广泛。然而&#xff0c;在构建机器学习模型时&#xff0c;我们面临着两个主要的挑战&#xff1a;经验风险最小化和结构风险最小化。本文将深入探讨这两种方法&#xff0c;并分析它们在优化机器学习模型中的作…...

Java泛型中的问号是什么意思

通配符概念 因为 List 是泛型类&#xff0c;为了 表示各种泛型 List 的父类&#xff0c;可以使用类型通配符&#xff0c;类型通配符使用问号(?)表示&#xff0c;将一个问号当做类型元素传递个 List&#xff0c;可以表示为 List<?>,意思是 元素类型未知的 List&#xf…...

粤嵌实训医疗项目day02(Vue + SpringBoot)

目录 一、创建vue项目并运行 二、vue-cli中的路由使用 三、element-ui框架、实现页面布局以及vue-路由 四、前端登录页面 五、user登录后端接口完善【后端】 六、user登录前端-请求工具-请求发起【前端】 七、请求的跨域-访问策略 八、完善项目的页面布局、导航菜单以及…...

西门子1500T插补控制从入门到精通:手把手教你配置直线与圆弧轨迹(附程序源码)

西门子1500T插补控制从入门到精通&#xff1a;手把手教你配置直线与圆弧轨迹&#xff08;附程序源码&#xff09; 在工业自动化领域&#xff0c;精确控制多轴协同运动一直是核心挑战。想象一下机械臂需要画一个完美的圆&#xff0c;或者CNC机床要切割复杂曲线——这些场景都离不…...

Arduino_QTouch库深度解析:AVR电容触摸驱动原理与工业实践

1. Arduino_QTouch 库深度解析&#xff1a;面向嵌入式工程师的 Qtouch 电容式触摸传感器驱动实践指南Atmel&#xff08;现为 Microchip&#xff09;Qtouch 技术是工业级电容式触摸感应方案的标杆之一&#xff0c;其核心优势在于高抗噪性、低功耗、强环境适应性及无需覆盖层的裸…...

Windows下OpenClaw安装指南:对接Phi-3-vision-128k-instruct图文模型

Windows下OpenClaw安装指南&#xff1a;对接Phi-3-vision-128k-instruct图文模型 1. 为什么选择OpenClawPhi-3-vision组合 去年我在处理大量图文混排的学术资料时&#xff0c;发现传统自动化工具难以理解图片中的表格和公式。直到尝试将OpenClaw与多模态模型结合&#xff0c;…...

锁相双极性PWM电机驱动原理与STM32实现

1. 项目概述Motor_LockedAntiphase是一个面向嵌入式电机控制的轻量级驱动库&#xff0c;专为实现锁相双极性PWM&#xff08;Locked Antiphase PWM&#xff09;控制模式而设计。该模式广泛应用于直流有刷电机&#xff08;DC Brushed Motor&#xff09;的双向调速与精确力矩控制场…...

TVA系统从安装到调优的关键节点把控

当AI智能体视觉检测系统&#xff08;TVA&#xff09;的硬件设备抵达现场&#xff0c;真正的挑战才刚刚开始。部署调试阶段是将蓝图变为现实的关键环节&#xff0c;其间遍布技术“暗礁”。作为一名现场工程师&#xff0c;您的严谨操作和问题预判能力&#xff0c;将直接决定系统上…...

云原生环境中的配置中心实践

云原生环境中的配置中心实践 &#x1f525; 硬核开场 各位技术老铁&#xff0c;今天咱们聊聊云原生环境中的配置中心实践。别跟我扯那些理论&#xff0c;直接上干货&#xff01;在云原生时代&#xff0c;配置管理是系统可靠性和可维护性的关键。不搞配置中心&#xff1f;那你…...

app启动自启动后无法重启后启动

开启High background power usage 可以就可以了有时候&#xff0c;只是因为手机需要一定的初始化时间&#xff0c;等1分钟就启动了。...

解决Flutter RefreshIndicator在单一列表项下的显示问题

在开发Flutter应用时,RefreshIndicator是一个非常有用的控件,它可以为列表视图提供下拉刷新的功能。然而,当列表中只有一个项目时,RefreshIndicator可能会遇到一个常见的问题:它不会显示。这篇博客将详细探讨这个问题的解决方案,并提供一个具体的实例。 问题描述 假设我…...

OZON平台选品指南:揭秘俄罗斯市场的潜力品牌与爆款趋势

对于跨境电商卖家而言&#xff0c;俄罗斯市场正成为一片充满机遇的蓝海。作为俄罗斯本土最大的综合电商平台&#xff0c;OZON的用户规模和消费潜力持续增长。然而&#xff0c;机遇往往伴随着挑战&#xff0c;如何在庞大的商品海洋中精准捕捉爆款&#xff0c;规避风险&#xff0…...

Yii2的$app->handleRequest($request)的本质的庖丁解牛

$app->handleRequest($request) 是 Yii2 框架运行时心脏的每一次搏动。 如果说 new Application() 是**“创世”&#xff08;构建世界&#xff09;&#xff0c;那么 $app->handleRequest($request) 就是“演化”&#xff08;处理事件&#xff09;。 它是整个 MVC 流程的总…...