news 2026/7/4 19:34:56

QWidget的窗口动画,Qt窗口各种动画效果合集,包括透明度、放大、缩小、上下左右平移等。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
QWidget的窗口动画,Qt窗口各种动画效果合集,包括透明度、放大、缩小、上下左右平移等。
#ifndefANIMATIONWIDGET_H#define ANIMATIONWIDGET_H#include<QMainWindow>#include<QWidget>#include<QPushButton>#include<QDesktopWidget>// 动画窗口classAnimationWidget:publicQWidget{Q_OBJECTpublic:explicitAnimationWidget(QWidget*parent=nullptr);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
#include"AnimationWidget.h"#include"MyType.h"#include<QGridLayout>#include<QPropertyAnimation>#include<QDesktopWidget>#include<QApplication>AnimationWidget::AnimationWidget(QWidget*parent):QWidget(parent){this->setWindowTitle(ZH_CN("动画窗口"));this->resize(400,150);this->setAttribute(Qt::WA_DeleteOnClose);m_pOpacityBtn=newQPushButton(ZH_CN("透明后还原"),this);connect(m_pOpacityBtn,SIGNAL(clicked(bool)),this,SLOT(opacity()));m_pMaxBtn=newQPushButton(ZH_CN("放大后还原"),this);connect(m_pMaxBtn,SIGNAL(clicked(bool)),this,SLOT(max()));m_pMinBtn=newQPushButton(ZH_CN("缩小后还原"),this);connect(m_pMinBtn,SIGNAL(clicked(bool)),this,SLOT(min()));m_pLeftBtn=newQPushButton(ZH_CN("左移后还原"),this);connect(m_pLeftBtn,SIGNAL(clicked(bool)),this,SLOT(left()));m_pRightBtn=newQPushButton(ZH_CN("右移后还原"),this);connect(m_pRightBtn,SIGNAL(clicked(bool)),this,SLOT(right()));m_pUpBtn=newQPushButton(ZH_CN("上移后还原"),this);connect(m_pUpBtn,SIGNAL(clicked(bool)),this,SLOT(up()));m_pDownBtn=newQPushButton(ZH_CN("下移后还原"),this);connect(m_pDownBtn,SIGNAL(clicked(bool)),this,SLOT(down()));QGridLayout*pLayout=newQGridLayout(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_pDesktopWidget=QApplication::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*pAnimation=newQPropertyAnimation(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*pAnimation=newQPropertyAnimation(this,"geometry");QRect startRect=QRect(QPoint(this->geometry().x(),this->geometry().y()),QSize(width(),height()));QRect stopRect=QRect(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);pAnimation>start(QAbstractAnimation::DeleteWhenStopped);}voidAnimationWidget::min(){QPropertyAnimation*pAnimation=newQPropertyAnimation(this,"geometry");QRect startRect=QRect(QPoint(this->geometry().x(),this->geometry().y()),QSize(width(),height()));QRect stopRect=QRect(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*pAnimation=newQPropertyAnimation(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*pAnimation=newQPropertyAnimation(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*pAnimation=newQPropertyAnimation(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*pAnimation=newQPropertyAnimation(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*pWidget=newAnimationWidget;pWidget->show();
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/4 19:28:07

三天掌握YOLO:从核心原理到实战部署的完整学习路径

第一次接触 YOLO 时&#xff0c;我盯着屏幕上飞速闪过的检测框和不断跳动的数字&#xff0c;心里只有一个念头&#xff1a;这玩意儿到底是怎么“看”到东西的&#xff1f;它凭什么能在视频里实时找出几十个目标&#xff0c;还能告诉我那是一只猫、一辆车&#xff0c;或者一个行…

作者头像 李华
网站建设 2026/7/4 19:27:35

混合精度计算在量子蒙特卡罗中的优化实践

1. 混合精度计算在量子蒙特卡罗中的革新应用量子多体系统的模拟一直是计算物理领域的核心挑战。传统方法需要处理指数级增长的希尔伯特空间&#xff0c;这使得精确对角化在超过20个格点的系统中变得不可行。变分蒙特卡罗(VMC)方法通过结合神经网络表示和马尔可夫链蒙特卡罗(MCM…

作者头像 李华
网站建设 2026/7/4 19:27:27

基于YOLOv8与OpenCV的实时目标检测系统构建与优化指南

在实际计算机视觉项目中&#xff0c;目标检测是连接图像理解和实际应用的核心桥梁。对于面临毕业设计压力的本科生或研究生而言&#xff0c;如何快速、扎实地完成一个基于深度学习的实时目标检测项目&#xff0c;常常是横亘在面前的一道难题。OpenCV 提供了强大的图像处理和后端…

作者头像 李华
网站建设 2026/7/4 19:23:25

SUMO交通仿真软件:从入门到实战应用

1. SUMO交通仿真软件概述 SUMO&#xff08;Simulation of Urban Mobility&#xff09;是一款开源的微观交通仿真软件&#xff0c;自2000年发展至今已成为交通工程领域的重要工具。作为一款多模态仿真平台&#xff0c;它能够精确模拟每辆车的独立行为&#xff0c;这使得SUMO特别…

作者头像 李华
网站建设 2026/7/4 19:22:55

AI大模型工程师核心技能与Multi-Agent系统实战指南

1. AI大模型工程师的核心技能图谱作为一名AI大模型工程师&#xff0c;需要掌握从底层原理到上层应用的全栈能力。根据当前行业需求&#xff0c;我将核心技能划分为四个关键维度&#xff1a;基础架构能力&#xff1a;Transformer架构深入理解、注意力机制优化、位置编码方案选择…

作者头像 李华
网站建设 2026/7/4 19:22:50

AI论文从零到一:研一独立完成深度学习论文的实战指南

很多研究生同学在研一阶段都会面临一个现实困境&#xff1a;导师项目繁忙、指导有限&#xff0c;自己又急需一篇符合毕业要求的论文。尤其是在人工智能、深度学习等热门方向&#xff0c;虽然机会多&#xff0c;但竞争也激烈&#xff0c;如何在没有强力外援的情况下&#xff0c;…

作者头像 李华