QWidget的窗口动画,Qt窗口各种动画效果合集,包括透明度、放大、缩小、上下左右平移等。
#ifndefANIMATIONWIDGET_H#define ANIMATIONWIDGET_H#includeQMainWindow#includeQWidget#includeQPushButton#includeQDesktopWidget// 动画窗口classAnimationWidget:publicQWidget{Q_OBJECTpublic:explicitAnimationWidget(QWidget*parentnullptr);publicslots:voidopacity();voidmax();voidmin();voidleft();voidright();voidup();voiddown();private:QDesktopWidget*m_pDesktopWidget;intm_nX;intm_nY;QPushButton*m_pOpacityBtn;//透明QPushButton*m_pMaxBtn;//放大QPushButton*m_pMinBtn;//缩小QPushButton*m_pLeftBtn;//左移QPushButton*m_pRightBtn;//右移QPushButton*m_pUpBtn;//上移QPushButton*m_pDownBtn;//下移};#endif// ANIMATIONWIDGET_H#includeAnimationWidget.h#includeMyType.h#includeQGridLayout#includeQPropertyAnimation#includeQDesktopWidget#includeQApplicationAnimationWidget::AnimationWidget(QWidget*parent):QWidget(parent){this-setWindowTitle(ZH_CN(动画窗口));this-resize(400,150);this-setAttribute(Qt::WA_DeleteOnClose);m_pOpacityBtnnewQPushButton(ZH_CN(透明后还原),this);connect(m_pOpacityBtn,SIGNAL(clicked(bool)),this,SLOT(opacity()));m_pMaxBtnnewQPushButton(ZH_CN(放大后还原),this);connect(m_pMaxBtn,SIGNAL(clicked(bool)),this,SLOT(max()));m_pMinBtnnewQPushButton(ZH_CN(缩小后还原),this);connect(m_pMinBtn,SIGNAL(clicked(bool)),this,SLOT(min()));m_pLeftBtnnewQPushButton(ZH_CN(左移后还原),this);connect(m_pLeftBtn,SIGNAL(clicked(bool)),this,SLOT(left()));m_pRightBtnnewQPushButton(ZH_CN(右移后还原),this);connect(m_pRightBtn,SIGNAL(clicked(bool)),this,SLOT(right()));m_pUpBtnnewQPushButton(ZH_CN(上移后还原),this);connect(m_pUpBtn,SIGNAL(clicked(bool)),this,SLOT(up()));m_pDownBtnnewQPushButton(ZH_CN(下移后还原),this);connect(m_pDownBtn,SIGNAL(clicked(bool)),this,SLOT(down()));QGridLayout*pLayoutnewQGridLayout(this);pLayout-addWidget(m_pOpacityBtn,0,0,1,1);pLayout-addWidget(m_pMaxBtn,0,1,1,1);pLayout-addWidget(m_pMinBtn,1,0,1,1);pLayout-addWidget(m_pLeftBtn,1,1,1,1);pLayout-addWidget(m_pRightBtn,2,0,1,1);pLayout-addWidget(m_pUpBtn,2,1,1,1);pLayout-addWidget(m_pDownBtn,3,0,1,1);//获取窗口中心m_pDesktopWidgetQApplication::desktop();m_nX(m_pDesktopWidget-width()-width())/2;m_nY(m_pDesktopWidget-height()-height())/2;// //窗口左上角的位置(含边框)// qDebug() this-frameGeometry().x() this-frameGeometry().y() ;//1// qDebug() this-x() this-y();//2// qDebug() this-pos().x() this-pos().y();//3// //窗口的宽度和高度(含边框)// qDebug() this-frameGeometry().width() this-frameGeometry().height();// //窗口左上角的位置(不含边框)// qDebug() this-geometry().x() this-geometry().y();// //窗口的宽度和高度(不含边框)// qDebug() this-geometry().width() this-geometry().height();//1// qDebug() this-width() this-height();//2// qDebug() this-rect().width() this-rect().height();//3// qDebug() this-size().width() this-size().height();//4}voidAnimationWidget::opacity(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,windowOpacity);pAnimation-setDuration(2000);pAnimation-setKeyValueAt(0,1);pAnimation-setKeyValueAt(0.5,0);pAnimation-setKeyValueAt(1,1);pAnimation-start(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::max(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,geometry);QRect startRectQRect(QPoint(this-geometry().x(),this-geometry().y()),QSize(width(),height()));QRect stopRectQRect(QPoint(0,0),QSize(m_pDesktopWidget-width(),m_pDesktopWidget-height()));pAnimation-setDuration(2000);pAnimation-setKeyValueAt(0,startRect);pAnimation-setKeyValueAt(0.5,stopRect);pAnimation-setKeyValueAt(1,startRect);pAnimationstart(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::min(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,geometry);QRect startRectQRect(QPoint(this-geometry().x(),this-geometry().y()),QSize(width(),height()));QRect stopRectQRect(startRect.center(),QSize(0,0));pAnimation-setDuration(2000);// pAnimation-setStartValue(startRect);// pAnimation-setEndValue(stopRect);pAnimation-setKeyValueAt(0,startRect);pAnimation-setKeyValueAt(0.5,stopRect);pAnimation-setKeyValueAt(1,startRect);pAnimation-start(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::left(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,pos);pAnimation-setDuration(2000);//控制在桌面内 /*pAnimation-setKeyValueAt(0, QPoint(m_nX, m_nY)); pAnimation-setKeyValueAt(0.5, QPoint(m_nX - width(), m_nY)); pAnimation-setKeyValueAt(1, QPoint(m_nX, m_nY));*/ //移动到桌面外 pAnimation-setKeyValueAt(0, QPoint(m_nX, m_nY)); pAnimation-setKeyValueAt(0.5, QPoint(0 - width() - 50, m_nY)); pAnimation-setKeyValueAt(1, QPoint(m_nX, m_nY)); pAnimation-start(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::right(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,pos);pAnimation-setDuration(2000);//移动到桌面外pAnimation-setKeyValueAt(0,QPoint(m_nX,m_nY));pAnimation-setKeyValueAt(0.5,QPoint(m_pDesktopWidget-width()50,m_nY));pAnimation-setKeyValueAt(1,QPoint(m_nX,m_nY));pAnimation-start(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::up(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,pos);pAnimation-setDuration(2000);//移动到桌面外pAnimation-setKeyValueAt(0,QPoint(m_nX,m_nY));pAnimation-setKeyValueAt(0.5,QPoint(m_nX,0-height()-50));pAnimation-setKeyValueAt(1,QPoint(m_nX,m_nY));pAnimation-start(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::down(){QPropertyAnimation*pAnimationnewQPropertyAnimation(this,pos);pAnimation-setDuration(2000);//移动到桌面外 pAnimation-setKeyValueAt(0, QPoint(m_nX, m_nY)); pAnimation-setKeyValueAt(0.5, QPoint(m_nX, m_pDesktopWidget-height() 50)); pAnimation-setKeyValueAt(1, QPoint(m_nX, m_nY)); pAnimation-start(QAbstractAnimation::DeleteWhenStopped);}AnimationWidget*pWidgetnewAnimationWidget;pWidget-show();

相关新闻

如何用BilibiliDown三步搞定B站视频下载?小白也能掌握的完整指南

如何用BilibiliDown三步搞定B站视频下载?小白也能掌握的完整指南

如何用BilibiliDown三步搞定B站视频下载?小白也能掌握的完整指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh…

2026/7/4 19:35:25阅读更多 →
【OpenHarmony/HarmonyOs 】实验室首页细节拆解:分类侧栏、搜索筛选与推荐探索交互

【OpenHarmony/HarmonyOs 】实验室首页细节拆解:分类侧栏、搜索筛选与推荐探索交互

【OpenHarmony/HarmonyOs 】实验室首页细节拆解:分类侧栏、搜索筛选与推荐探索交互本文基于我的 OpenHarmony/HarmonyOS 项目「物理视界 PhysicsVision」整理。实验室首页是整个应用的核心入口,它承载了 28 个物理模型的分类展示、年级筛选、关键词搜索、…

2026/7/4 19:35:25阅读更多 →
阿根廷VS佛得角美加墨世界杯超级大黑马能否挑落梅西战平潘帕斯?

阿根廷VS佛得角美加墨世界杯超级大黑马能否挑落梅西战平潘帕斯?

世界杯三十二强淘汰赛阿根廷VS佛得角,北京时间7月4日早上6点在迈阿密硬石体育场开赛。本场是卫冕冠军对阵非洲黑马的经典对决,两队整体实力、大赛底蕴差距悬殊,也是本届世界杯淘汰赛看点十足的强弱对话。小组赛阶段两队晋级表现截然不同。阿根…

2026/7/4 19:30:24阅读更多 →
GPTs vs 人工标注:真实金融工单场景下的性能对比实战

GPTs vs 人工标注:真实金融工单场景下的性能对比实战

1. 项目概述:一场真实场景下的文本标注能力硬碰硬最近在给一个金融风控模型做数据清洗时,我手头有3200条用户投诉工单,需要打上“欺诈意图”“服务不满”“系统故障”“政策误解”四类标签。按老办法,得找外包团队人工标——每人每…

2026/7/4 20:40:45阅读更多 →
逆向工程实战:58同城App密码加密算法解析与Python复现

逆向工程实战:58同城App密码加密算法解析与Python复现

1. 项目概述与核心价值最近在和一些做数据采集、自动化测试的朋友交流时,经常听到一个话题:现在很多App的接口,尤其是涉及用户登录、交易等核心业务的接口,加密和风控做得越来越复杂,逆向分析的难度直线上升。这确实是…

2026/7/4 20:40:45阅读更多 →
Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案

Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案

Fast-GitHub终极指南:如何让GitHub下载速度提升10倍的免费解决方案 【免费下载链接】Fast-GitHub 国内Github下载很慢,用上了这个插件后,下载速度嗖嗖嗖的~! 项目地址: https://gitcode.com/gh_mirrors/fa/Fast-GitHub 对于…

2026/7/4 20:40:45阅读更多 →
TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案

TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案

TwelveMonkeys ImageIO:Java图像格式处理的终极解决方案 【免费下载链接】TwelveMonkeys TwelveMonkeys ImageIO: Additional plug-ins and extensions for Javas ImageIO 项目地址: https://gitcode.com/gh_mirrors/tw/TwelveMonkeys TwelveMonkeys ImageIO…

2026/7/4 20:40:45阅读更多 →
合同管理系统的实施-开发费用问题

合同管理系统的实施-开发费用问题

此前《从纸质台账到数智中台:合同管理系统的演进与未来》一文,梳理了合同管理系统的发展脉络。从功能迭代角度来看,合同管理系统是依托 OA 无纸化办公、企业信息化的基础需求,逐步拆分独立出来的专业化管理软件。在专业化演变进程…

2026/7/4 20:40:45阅读更多 →
珠宝店做网站就找我!一站式解决展示、销售、定制全流程

珠宝店做网站就找我!一站式解决展示、销售、定制全流程

模版案例钻石与宝石展示网站 - 专业珠宝行业模板 开珠宝店是不是总遇到这些问题? 线下客流减少,只能守店等客 微信沟通效率低,产品细节说不清 钻戒定制反复改,费时又费力 老客户流失,活动通知难触达 想做线上&…

2026/7/4 20:35:45阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/7/4 14:25:39阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/7/4 14:57:00阅读更多 →
端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

端到端自动驾驶:从GTC‘26看工程可信落地的核心逻辑

1. 项目概述:当算法工程师走进GTC26展厅,看到的不是芯片,而是“端到端”的呼吸节奏“端到端”这三个字,在GTC’26现场出现的频率,高得像NVLink带宽测试时的峰值曲线——它不再是一个论文里的技术路径选项,而…

2026/7/4 0:02:48阅读更多 →
缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考

缺牙修复科普:常见义齿类型与选择参考牙齿缺失是中老年人群中较为常见的口腔问题,不仅会造成咀嚼不便、进食受影响,长期还可能对营养摄入与日常社交带来困扰。义齿是改善缺牙问题的常用方式,目前市面上的义齿种类较多,…

2026/7/4 0:02:48阅读更多 →
STM32F091RC与LTC6904实现高精度方波信号生成

STM32F091RC与LTC6904实现高精度方波信号生成

1. 项目概述:LTC6904与STM32F091RC的精准方波生成方案在嵌入式系统开发中,精确的时钟信号和定时控制往往是项目成败的关键。LTC6904作为一款低功耗、高精度的可编程振荡器芯片,与STM32F091RC这款ARM Cortex-M0内核微控制器的组合,…

2026/7/4 0:02:48阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/4 1:16:56阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/4 2:33:55阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/4 2:33:55阅读更多 →