-
大小: 3KB文件类型: .7z金币: 1下载: 0 次发布日期: 2021-06-12
- 语言: 其他
- 标签: Qt StackWidget animation 美化
资源简介
QStackedWidget切换widget时的动画
代码片段和文件信息
#include “animationstackedwidget.h“
#include
#include
AnimationStackedWidget::AnimationStackedWidget(QWidget *parent)
: QStackedWidget(parent)
{
m_isAnimating = false;
m_currentValue = 0;
m_currentIndex = 0;
m_previousIndex = 0;
m_animation = new QPropertyAnimation(this QByteArray());
m_animation->setDuration(500);
m_animation->setEasingCurve(QEasingCurve::Linear);
m_animation->setStartValue(0);
m_animation->setEndValue(0);
connect(m_animation SIGNAL(valueChanged(QVariant)) SLOT(valueChanged(QVariant)));
connect(m_animation SIGNAL(finished()) SLOT(animationfinished()));
}
AnimationStackedWidget::~AnimationStackedWidget()
{
delete m_animation;
}
void AnimationStackedWidget::paintEvent(QPaintEvent * event)
{
if(m_isAnimating)
{
QPainter painter(this);
QTransform transform;
renderCurrentWidget(painter transform);
renderPreviousWidget(painter transform);
}
else
{
QWidget::paintEvent(event);
}
}
void AnimationStackedWidget::renderPreviousWidget(QPainter &painter QTransform &transform)
{
QWidget *w = widget(m_previousIndex);
QPixmap pixmap( w->size() );
w->render(&pixmap);
Q_UNUSED(transform);
switch(m_type)
{
case BottomToTop :
{
painter.drawPixmap(0 height()/2 pixmap);
break;
}
case TopToBottom :
{
painter.drawPixmap(0 -height()/2 pixmap);
break;
}
case LeftToRight :
{
painter.drawPixmap(width()/2 0 pixmap);
break;
}
case RightToLeft :
{
painter.drawPixmap(-width()/2 0 pixmap);
break;
}
default: break;
}
}
void AnimationStackedWidget::renderCurrentWidget(QPainter &painter QTransform &transform)
{
QWidget *w = widget(m_currentIndex);
QPixmap pixmap( w->size() );
w->render(&pixmap);
switch(m_type)
{
case BottomToTop :
{
transform.translate(0 m_currentValue);
painter.setTransform(transform);
painter.drawPixmap(0 -height()/2 pixmap);
break;
}
case TopToBottom :
{
transform.translate(0 m_currentValue);
painter.setTransform(transform);
painter.drawPixmap(0 height()/2 pixmap);
break;
}
case LeftToRight :
{
transform.translate(m_currentValue 0);
painter.setTransform(transform);
painter.drawPixmap(-width()/2 0 pixmap);
break;
}
case RightToLeft :
相关资源
- Trojan-Qt5-Windows-0.0.4.rar
- 酒店管理系统基于Qt Creator5)
- vtk QT做的三维地质可视化系统2of2
- Qt局域网聊天软件
- Qt Creator opengl实现四元数鼠标控制轨迹
- QT局域网聊天系统(基于QT5.修改过)
- qt-电子点菜系统
- C 餐厅叫号系统(QT平)
- QT 实现文件下载
- qt图像处理
- QT,JPEG解码源代码(已完成)
- Qt 播放音频文件
- Qt 读取16进制的data文件
- MQTT+串口(usart)透传
- 易语言QQTEA算法源码
- VC工程转Qt工程文件的工具
- MQTT推送Demo
- 基于Linux、QT的视频监控系统的设计与
- Qt 百度地图 定位
- QT酷炫界面开发指南《QmlBook》
- Ubuntu下操作Excel,qt代码
- Qt图片浏览器 --基于Qt的Graphics View f
- qtnribbon2破解
- Qt软件开发 完整项目代码
- MQTT_3.1protocol_Specific中文版
- 在QT中使用RTP进行视频的采集和传输
- Mini6410 Qt4和Qtopia编程开发指南
- Qt实现Code39条形码
- qt_ffmpeg_mp4_export_and_import.zip
- QT5.5入门与项目实战
评论
共有 条评论