Skip to content

Qt怎样将gif作为窗口背景

Published: at 07:45 PM | 1 min read

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

  1. 定义一个movie对象
QScopedPointer<QMovie> movie_;
  1. 设置movie
movie_.reset(new QMovie(path));
connect(movie_.get(), &QMovie::frameChanged, this, &FramelessWidget::onPaintNewFrame);
movie_->start();

// update会进行重绘
void FramelessWidget::onPaintNewFrame(int frameNumber)
{
	update();
}
  1. 实现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)); // 绘制不规则背景
	}

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