QT让一个图片随窗体缩放

来源:互联网 发布:java实现解压缩zip 编辑:程序博客网 时间:2024/05/02 00:42

来源: http://blog.csdn.net/xie376450483/article/details/5902697

下面给出一个从QWidget派生的类ImageWidget,来设置其背景为一个图片,并可随着窗体改变而改变,其实从下面的代码中可以引申出其它许多方法,如果需要的话,可以从这个类再派生出其它类来使用。
头文件: ImageWidget.hpp

Quote:
#ifndef IMAGEWIDGET_HPP
#define IMAGEWIDGET_HPP

#include <QtCore>
#include <QtGui>

class ImageWidget : public QWidget
{
Q_OBJECT
public:
     ImageWidget(QWidget *parent = 0, Qt::WindowFlags f = 0);
     virtual ~ImageWidget();
protected:
     void resizeEvent(QResizeEvent *event);
private:
     QImage _image;
};

#endif


CPP文件: ImageWidget.cpp

Quote:
#include "ImageWidget.hpp"

ImageWidget::ImageWidget(QWidget *parent, Qt::WindowFlags f)
: QWidget(parent, f)
{
     _image.load("image/image_background");
     setAutoFillBackground(true);   // 这个属性一定要设置
     QPalette pal(palette());
     pal.setBrush(QPalette::Window,
     QBrush(_image.scaled(size(), Qt::IgnoreAspectRatio,
     Qt::SmoothTransformation)));
     setPalette(pal);
}

ImageWidget::~ImageWidget()
{
}

// 随着窗体变化而设置背景
void ImageWidget::resizeEvent(QResizeEvent *event)
{
     QWidget::resizeEvent(event);
     QPalette pal(palette());
     pal.setBrush(QPalette::Window,
     QBrush(_image.scaled(event->size(), Qt::IgnoreAspectRatio,
     Qt::SmoothTransformation)));
     setPalette(pal);
}

 

原创粉丝点击