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

QT上位机开发(动画效果)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        不管是仿真,还是对真实环境的一比一模拟,动画都是非常好的一种呈现方式。目前在qt上面,实现动画主要有两种方法。一种,就是自己用定时器和canvas实现动画,这种情况比较适合复杂或者是定制类的动画;另外一种,qt本身也提供了各种各样的动画类,比如QPropertyAnimation,利用这些类同样可以实现动画的效果。今天,我们就用后面一种方法实现一下。

1、创建qt widget工程

        首先老规矩,还是需要创建一个qt widget工程。

2、修改头文件

        头文件部分,主要就是三件事情。第一,增加一个QPushButton变量,这个变量也是实现动画的主体;第二,增加一个QPropertyAnimation的变量,它也就是动画控制的方法;第三,增加一个按钮回调函数,在按钮回调函数中开启动动画。

#pragma once#include <QtWidgets/QMainWindow>
#include <QPushButton>
#include <QPropertyAnimation>
#include "ui_QtWidgetsApplication1.h"class QtWidgetsApplication1 : public QMainWindow
{Q_OBJECTpublic:QtWidgetsApplication1(QWidget *parent = nullptr);~QtWidgetsApplication1();private:Ui::QtWidgetsApplication1Class ui;private slots:void startAnimation();private:QPushButton *p_button;QPropertyAnimation *p_animation;
};

3、实现源文件

        整个源文件的内容不算复杂。最主要的部分,就是初始化QPushButton和QPropertyAnimation这两个变量。前者就是常规的创建方法。后者稍微复杂一点,关键是里面属性的设置,比如说起始位置、结束位置、动画时间,这些都需要一一设置。最后就是按钮的回调函数部分。

        整个动画效果是这样的,首先是界面上有一个按钮,单击按钮后,按钮本身就会发生移动。怎么移动,这都是由QPropertyAnimation来决定的。

#include "QtWidgetsApplication1.h"QtWidgetsApplication1::QtWidgetsApplication1(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);// 创建按钮p_button = new QPushButton("Click Me", this);p_button->setGeometry(100, 100, 100, 30);// 创建动画对象p_animation = new QPropertyAnimation(p_button, "pos");// 设置动画的起始和结束值p_animation->setStartValue(QPoint(100, 100));p_animation->setEndValue(QPoint(300, 300));// 设置动画的持续时间 1sp_animation->setDuration(1000); // 连接按钮的点击信号到槽函数connect(p_button, &QPushButton::clicked, this, &QtWidgetsApplication1::startAnimation);
}QtWidgetsApplication1::~QtWidgetsApplication1()
{delete p_button;delete p_animation;
}void QtWidgetsApplication1::startAnimation() {// 开始动画p_animation->start();
}

4、编译和测试

        编译和测试,相对而言就比较简单了。编译无误之后,直接单击按钮,确认按钮是否发生了移动。如果是,则代表达到了我们验证的效果。否则,需要回头重新debug确认一下。一开始的时候,按钮位于窗口的左上方,

        按钮单击后,按钮被移动到了窗口的右下方,效果就是这样的。

相关文章:

QT上位机开发(动画效果)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 不管是仿真&#xff0c;还是对真实环境的一比一模拟&#xff0c;动画都是非常好的一种呈现方式。目前在qt上面&#xff0c;实现动画主要有两种方法…...

手写实现 bind 函数

Function.prototype.myBind function(context) {if (typeof this ! function) {return}const args [...arguments].slice(1)const fn thisreturn function Fn() {// 判断函数作为构造函数的情况&#xff0c;这个时候需要传入当前的函数的this给apply调用&#xff0c;其余情况…...

安卓Android Studio读写MifareOne M1 IC卡源码

本示例使用的发卡器&#xff1a;https://item.taobao.com/item.htm?id615391857885&spma1z10.5-c-s.w4002-21818769070.11.3d2f789eOUPJBK <?xml version"1.0" encoding"utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xm…...

一二三应用开发平台文件处理设计与实现系列之5——MinIO技术预研

背景 上篇介绍了文件读写框架设计与实现&#xff0c;同时顺便说明了本地磁盘存储模式的实现模式。 今天来说下基于文件读写框架&#xff0c;如何集成对象存储组件minio&#xff0c;集成之前&#xff0c;需要对minio进行必要的了解&#xff0c;本篇是minio的技术预研。 minio简…...

Native.js是什么

Native.js 是一个开源项目&#xff0c;旨在通过 JavaScript 调用原生 Android API。它的目标是让 JavaScript 开发者能够使用 Android 原生 API&#xff0c;从而在不编写原生代码的情况下构建 Android 应用。 使用 Native.js&#xff0c;开发者可以使用 JavaScript 调用 Andro…...

Vant-ui图片懒加载

核心代码 在你的全局顶部引入和初始化 Vue.use(vant.Lazyload, {loading: /StaticFile/img/jiazai.jpg,error: /StaticFile/img/jiazai.jpg,lazyComponent: false, });//图片懒加载 <img v-lazy"https://img-blog.csdnimg.cn/direct/3d2c8a7e2c0040488a8128c3e381d58…...

创建EasyCodeMybatisCodeHelperPro模板文件用于将数据库表生成前端json文件

在intellij idea中&#xff0c;通过插件EasyCodeMybatisCodeHelperPro&#xff0c;从现有的模板文件中选择一个复制粘贴&#xff0c;然后稍为修改&#xff0c;即可得到一个合适的模板文件。 现在的前端&#xff0c;越来越像后端。TypeScript替代了JavaScript&#xff0c;引入了…...

华为端口安全常用3种方法配置案例

安全动态mac地址学习功能 [Huawei]int g0/0/01 interface GigabitEthernet0/0/1 port-security enable //开启安全 port-security max-mac-num 2 //最多为2个mac地址学习 port-security protect-action restrict //丢包带警告 port-security aging-time 1 //mac地址的老化时间…...

RH850P1X芯片学习笔记-Flash Memory

文章目录 FeaturesClock Supply Block DiagramFlash SizeMemory ConfigurationRegistersRegister Base AddressList of RegistersRegister Reset Condition 与Flash Memory相关的操作模式Functional OverviewOption BytesOPBT0 — Option Byte 0OPBT1 — Option Byte 1OPBT2 —…...

利用XSS漏洞打cookie

目录 1、为什么要打cookie&#xff1f; 2、怎样利用XSS来打cookie&#xff1f; 3、利用Bluelotus_xssReceiver平台来打cookie 4、利用beef-xss平台来打cookie 上一篇给大家介绍了xss漏洞的基础知识&#xff0c;在本篇章将会介绍和演示一下利用xss漏洞打cookie的演示&#x…...

用java写个redis工具类

下面是一个简单的Redis工具类的示例&#xff0c;使用Java语言编写&#xff1a; import redis.clients.jedis.Jedis;public class RedisUtils {private static Jedis jedis;public static void connect(String host, int port) {jedis new Jedis(host, port);}public static v…...

实现防抖函数

// 防抖就是&#xff0c;事件触发 delay 秒后再执行&#xff0c;如果有重新的触发&#xff0c;重新计时 function debounce(func, delay) {if(typeof func ! function) {return}let timer 0return function () {if (timer) {clearTimeout(timer)timer null}timer setTimeout…...

MetaGPT task1学习

基础知识学习了解&#xff1a; 安装环境&#xff1a; 获取MetaGPT 使用pip获取MetaGPT pip install -i https://pypi.tuna.tsinghua.edu.cn/simple metagpt0.5.2 配置MetaGPT 完成MetaGPT后&#xff0c;我们还需要完成一些配置才能开始使用这个强力的框架&#xff0c;包括配…...

关于量子计算机的设想

从CPU架构说起 CISCRISCNISCCCSC CISC是复杂指令集计算机&#xff0c;以x86为代表&#xff1b; RISC是精简指令集计算机&#xff0c;以ARM为代表&#xff1b; NISC是无指令集计算机&#xff0c;CCSC是核-电路分离计算机&#xff0c;这两个是本文要讨论的内容。 如果没有指令…...

序列模型(4)—— Scaling Laws

本文介绍 LLM 训练过程中重要的 Scaling Laws&#xff0c;这是一个经验规律&#xff0c;指出了固定训练成本&#xff08;总计算量FLOPs&#xff09; C C C 时&#xff0c;如何调配模型规模&#xff08;参数量&#xff09; N N N 和训练 Token 数据量 D D D&#xff0c;才能实现…...

【软件测试学习笔记1】测试基础

1.软件测试的定义 软件的定义&#xff1a;控制计算机硬件工作的工具 软件的基本组成&#xff1a;页面客户端&#xff0c;代码服务器&#xff0c;数据服务器 软件产生的过程&#xff1a;需求产生&#xff08;产品经理&#xff09;&#xff0c;需求文档&#xff0c;设计效果图…...

pytorch详细探索各种cnn卷积神经网络

目录 torch.nn.functional子模块详解 conv1d 用法和用途 使用技巧 适用领域 参数 注意事项 示例代码 conv2d 用法和用途 使用技巧 适用领域 参数 注意事项 示例代码 conv3d 用法和用途 使用技巧 适用领域 参数 注意事项 示例代码 conv_transpose1d 用法…...

OpenCV——八邻域断点检测

目录 一、理论基础1、八邻域2、断点检测 二、代码实现三、结果展示四、参考链接 OpenCV——八邻域断点检测由CSDN点云侠原创&#xff0c;爬虫自重。如果你不是在点云侠的博客中看到该文章&#xff0c;那么此处便是不要脸的爬虫。 一、理论基础 1、八邻域 图1 八邻域示意图 图…...

leetcode238:除自身以外数组的乘积

文章目录 1.使用除法&#xff08;违背题意&#xff09;2.左右乘积列表3.空间复杂度为O(1)的方法 在leetcode上刷到了这一题&#xff0c;一开始并没有想到好的解题思路&#xff0c;写篇博客再来梳理一下吧。 题目要求&#xff1a; 不使用除法在O(n)时间复杂度内 1.使用除法&am…...

VTK开发调试环境下载(VTK开发环境一步到位直接开发,无需自己配置编译 VS2017+Qt5.12.10+VTK)

一、无与伦比的优势 直接下载代码就可以调试的VTK代码仓库。 二、资源制作原理 这个资源根据VTK源码 编译出动态库文件 pdb lib dll 文件&#xff08; x64 debug &#xff09; 并将这两者同时放在一个代码仓库里&#xff0c;下载就能用。 三、使用方法&#xff08;vtk-so…...

AI智能体扩展实战:基于MCP协议构建AlterLab工具箱服务器

1. 项目概述&#xff1a;一个为AI智能体打造的“工具箱”服务器最近在折腾AI智能体&#xff08;Agent&#xff09;的开发&#xff0c;发现一个挺有意思的项目&#xff1a;RapierCraft/alterlab-mcp-server。简单来说&#xff0c;这是一个实现了模型上下文协议&#xff08;Model…...

[特殊字符] 论文查重还在花钱?这个AI平台凭什么敢免费?一条给你讲透

各位正在跟论文死磕的朋友们&#xff0c;今天咱们不聊选题&#xff0c;不聊文献&#xff0c;聊一个每个毕业生都绑不开的刚需——查重。 你有没有算过一笔账&#xff1f;本科论文查一次少说三四十&#xff0c;硕士论文动辄上百&#xff0c;有些平台甚至标价两三百。一篇论文改…...

高效AI教材写作指南:借助AI工具,低查重完成40万字教材编写!

教材编写中的原创性与合规性问题及 AI 工具解决方案 在教材编写的过程中&#xff0c;如何平衡原创性与合规性是一个不可忽视的重要问题。在借鉴优秀教材中的内容时&#xff0c;创作者不可避免地会担心作品的查重率过高&#xff1b;而在尝试自行创作知识点时&#xff0c;又可能…...

AI Agent 对比和选型

一、前言&#xff01;&#xff01;&#xff01;Agent&#xff0c;把天才 AI 变成一个能干活的人 &#xff01;&#xff01;&#xff01;如果说 LLM 大模型是一个天才引擎&#xff0c;那么 Agent 就是很多无形的手&#xff0c;去控制这个天才引擎完成各种各样的工作和流程&#…...

AI智能体技能库开发指南:模块化设计、安全实践与性能优化

1. 项目概述&#xff1a;一个面向AI智能体的技能库最近在折腾AI智能体&#xff08;Agent&#xff09;开发&#xff0c;发现一个挺有意思的项目&#xff1a;jdrhyne/agent-skills。这名字听起来就挺直白&#xff0c;一个“智能体技能库”。简单来说&#xff0c;它不是一个完整的…...

基于NestJS的上下文管理:从AsyncLocalStorage到微服务架构实践

1. 项目概述&#xff1a;从“Nest Hub”到“contextzero/nest_hub”的深度解构最近在逛一些开发者社区和开源项目托管平台时&#xff0c;我注意到一个挺有意思的现象&#xff1a;一个名为“contextzero/nest_hub”的项目开始在一些技术讨论中被提及。乍一看标题&#xff0c;很多…...

当AI编程助手成为奢侈品:Cursor Free VIP如何重新定义开发者的数字身份自由

当AI编程助手成为奢侈品&#xff1a;Cursor Free VIP如何重新定义开发者的数字身份自由 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Yo…...

诛仙手游多开最多几开?用什么云手机比较好?

很多喜欢玩诛仙手游的朋友们都喜欢多开&#xff0c;但是今天小编告诉你们多开也不能开太多哦&#xff0c;要选择合适的云手机多开才行&#xff0c;不然同一个ip多开很容易封号&#xff0c;今天小宝就来给大家分析诛仙多开几个比较合适&#xff0c;以及用什么云手机多开不容易封…...

Linux驱动开发避坑指南:手把手教你实现三种mmap内存映射(附完整代码)

Linux驱动开发实战&#xff1a;三种mmap内存映射方案深度解析与性能对比 在嵌入式系统和图形处理领域&#xff0c;直接访问内核内存的需求日益增长。想象一下这样的场景&#xff1a;你正在开发一个视频处理驱动&#xff0c;需要将摄像头采集的高清帧数据传输到用户空间进行实时…...

别再只会用555了!用继电器搭建LED闪烁电路的3个隐藏知识点(附电路图)

继电器驱动LED闪烁电路&#xff1a;超越555的三大物理奥秘与实战设计 在电子爱好者的世界里&#xff0c;LED闪烁电路就像"Hello World"之于程序员&#xff0c;是入门必修的第一课。大多数教程会引导初学者使用555定时器这种"标准化方案"&#xff0c;却很少…...