欢迎访问Ningto's博客

Menu
  • 首页
  • 归档
  • 关于
  • 书签
  • 必应壁纸
  • IT聚合
  • 工具
    • 我的工具列表
    • 我的网盘
    • 必应每日壁纸API
    • Html转Markdown
    • 仙尘光标
Menu

Qt怎样将gif作为窗口背景

最后更新 2021-08-10 19:45:03   阅读量 1043

很多窗口会在背景展示一些动态的信息,此时用gif是比较合适的,Qt窗口使用gif作用背景步骤如下:

  1. 定义一个movie对象

    QScopedPointer<QMovie> movie_;
    
  2. 设置movie

    movie_.reset(new QMovie(path));
    connect(movie_.get(), &QMovie::frameChanged, this, &FramelessWidget::onPaintNewFrame);
    movie_->start();
    
    // update会进行重绘
    void FramelessWidget::onPaintNewFrame(int frameNumber)
    {
    update();
    }
    
  3. 实现paintEvent 要想将图片绘制到背景上需要实现paintEvent接口

    if (movie_) {
        QPixmap pixmap = movie_->currentPixmap();
        if (!pixmap.isNull()) {
            pixmap_ = pixmap;
        }
    }
    
    
    if (!pixmap_.isNull()) {
        QPainter painter(this);
        painter.drawPixmap(0, 0, pixmap_.scaled(this->size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); // 绘制不规则背景
    }
    

这样就让背景动起来了,不过如果想实现一些动画效果还是有些不足。

(转载本站文章请注明作者和出处:泞途 - ningto.com)

下一篇 – 卸载程序——自删除
上一篇 – boost命令行解析

  1. Qt

toningto@outlook.com

推荐文章

Effective Python

Python的几种函数参数类型

标签云

MongoDB Mobile Boost Javascript Android Bug Mac Qt Windows Go Shell IOS Others Java Tools Design Tips Product Database Node.js Linux Python C/C++ Web MQ Life React

推广链接

【腾讯云】云产品限时秒杀,爆款1核2G云服务器,首年99元

多谢支持,用了好几年,服务很稳定支持多设备!

其他

文章RSS

Copyright © 2016 Welcome To Ningto Blog | 鄂ICP备17003086号-2