没有在QWidget上显示的背景图像

时间:2010-05-13 04:42:00

标签: qt qt4 qt-creator

我正在设计一个使用QWidget的窗口并设置一个背景图片,当我运行我的代码时,我没有得到背景图片,而是显示默认背景的窗口。

任何人都可以帮助我。可能是什么原因。


// In header file
class STUDY : public QMainWindow, public Ui::STUDYClass
{
    Q_OBJECT

public:
    STUDY(QWidget *parent = 0, Qt::WFlags flags = 0);
    ~STUDY();

    QPaintEvent *p2;

    void backgroundImage();
    void paintEvent(QPaintEvent *);

public slots:
};

//Constructor and paintEvent function in Cpp file

STUDY::STUDY(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
    setupUi(this);
    backgroundImage();
    update();
    paintEvent(p2);
}

void STUDY::paintEvent(QPaintEvent *p2)
{
    QPixmap pixmap;
    pixmap.load(":/STUDY/Resources/Homepage.png");
    QPainter paint(this);
    paint.drawPixmap(0, 0, pixmap);
    QWidget::paintEvent(p2);
}

2 个答案:

答案 0 :(得分:3)

有很多方法可以将背景颜色设置为窗口,

我会给你一个简单的技巧。即覆盖paintEvent的{​​{1}}。并在那里画出像素图。

以下是示例窗口小部件代码,我希望它有所帮助

标头文件

QWidget

CPP文件

#ifndef QBACKGROUNDIMAGE_H
#define QBACKGROUNDIMAGE_H

#include <QtGui/QMainWindow>
#include "ui_QbackgroundImage.h"
#include <QtGui>

class backgroundImgWidget;

class QbackgroundImage : public QMainWindow
{
    Q_OBJECT

public:
    QbackgroundImage(QWidget *parent = 0);
    ~QbackgroundImage();

private:
    Ui::QbackgroundImage ui;
};

class backgroundImgWidget : public QWidget
{
     Q_OBJECT

public:
    backgroundImgWidget(QWidget *parent = 0);
    ~backgroundImgWidget();

protected:
    void paintEvent(QPaintEvent *p2);
};

#endif // QBACKGROUNDIMAGE_H

答案 1 :(得分:1)

您可以重新实现paintEvent

void Widget::paintEvent( QPaintEvent* e )
{
    QPainter painter( this );
    painter.drawPixmap( 0, 0, QPixmap(":/new/prefix1/picture001.png").scaled(size()));

    QWidget::paintEvent( e );
}