问题已解决,感谢iiiyyyhhhsss ,问题出在qrc文件,
路径设置不对
新建prefix默认为/new/prefix1
所以路径为“:/new/prefix1/images/wind800600.png”
感谢iiiyyyhhhsss 我测试了,是图片加载问题,
QString file=QString::fromUtf8(":images/wind800600.png");
ImageShow=_image.load(file,"PNG");
qDebug("ImageShow=%s\n",ImageShow?"TRUE":"FALSE");
显示是FALSE; ImageShow=FALSE
QImage::scaled: Image is a null image
QImage::scaled: Image is a null image
我现在PNG图片放在项目文件下images目录下,名称是wind800600.png,在qrc资源文件里已将图片加入,请问使用方法有错误吗?
_image.load(":images/wind800600.png");
直接load我也试过,结果都是黑屏
原文如下:
21、如何显示一个图片并使其随窗体同步缩放
答:下面给出一个从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);
}
[ 此帖被kingnight在2009-09-20 14:26重新编辑 ]