基本思想:假设A为主窗口,B为子窗口。A打开或关闭时,先对A窗口进行截图,然后将图片部满整个B窗口的,在paintEvent里面进行动态缩放或放大画图。最后使用动画,将B窗口以动画的形式打开或关闭,动画播放完毕后,B发送一个信号给A,B关闭,A显示出来。

核心代码发下:

在A窗口里:

QPixmap pixmap;

CTestDialog dlg(this);
    dlg.SetPixmap(pixmap.grabWidget(this));
    hide();
    dlg.exec();

B窗口:

CTestDialog::CTestDialog(QWidget *pParent) : QDialog(pParent)
{
    ui.setupUi(this);
    setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint); 
}

CTestDialog::~CTestDialog()
{
}

void CTestDialog::SetPixmap(const QPixmap &pixmap)
{
    m_backPixmap = pixmap;
    m_image = pixmap.toImage();
    update();

QDesktopWidget *desktopWidget = QApplication::desktop();
    QRect screenRect = desktopWidget->screenGeometry();

QPropertyAnimation *animation = new QPropertyAnimation(this, "geometry");
    animation->setDuration(2200);
    animation->setEasingCurve(QEasingCurve::OutBounce);
    animation->setStartValue(QRect((screenRect.width() - 50) / 2, (screenRect.height() - 50) / 2, 50, 50));
    animation->setEndValue(QRect((screenRect.width() - 500) / 2, (screenRect.height() - 400) / 2, 500, 400));
    animation->start();
}

void CTestDialog::paintEvent(QPaintEvent *p)
{
     QPalette pal(palette());
     pal.setBrush(QPalette::Window, QBrush(m_image.scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)));
     setPalette(pal);
}

 
http://blog.csdn.net/itjobtxq/article/details/9663757

最新文章

  1. python之最强王者(4)——字符串
  2. 使用ganglia监控hadoop及hbase集群
  3. java数据类型
  4. Win7安装Redis
  5. CentOS6.4安装mysql2redis
  6. Servlet 编程 简单流程处理(重定向)
  7. T4自动生成数据库C#实体类学习(1)
  8. oracle对象类型
  9. 尽量多的以 const/enum/inline 替代 #define
  10. MySQL 性能方案
  11. 1013团队Beta冲刺day2
  12. 27.app后端搭建聊天服务器的经历
  13. Arcpy多线程热力图
  14. Glad to see you! CodeForces - 810D (交互+二分)
  15. 对MSF八个原则的思考
  16. js 标准对象
  17. C#让控制台程序不显示闪退窗口的方法
  18. Eclipse安装php插件phpeclipse(转)
  19. python之爬虫_模块
  20. LIBSVM与LIBLINEAR

热门文章

  1. Cola:一个分布式爬虫框架 - 系统架构 - Python4cn(news, jobs)
  2. BC第二场
  3. stl非变易算法(二)
  4. SQL Server索引进阶:第十级,索引内部结构
  5. Unslider – 轻量的响应式 jQuery 内容轮播插件
  6. No.1小白的HTML+CSS心得篇
  7. CSS3滤镜
  8. SQL Server2012新特性概述
  9. 磁盘性能,你可能不知道的IOPS计算方法
  10. [LeetCode]题解:005-Longest Palindromic Substring优化