qt - 背景图像未显示在 QWidget 上

标签 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);
}

最佳答案

设置窗口背景颜色的方法有很多种,

我会给你一个简单的技巧。即覆盖 QWidgetpaintEvent。并在那里绘制像素图。

这是示例小部件代码,希望对您有所帮助

头文件

#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

CPP文件

#include "QbackgroundImage.h"

QbackgroundImage::QbackgroundImage(QWidget *parent)
    : QMainWindow(parent)
{
    // ui.setupUi(this);

    backgroundImgWidget* widget = new backgroundImgWidget();
    setCentralWidget(widget);
}

QbackgroundImage::~QbackgroundImage()
{
}

backgroundImgWidget::backgroundImgWidget(QWidget *parent):QWidget(parent)
{
}

backgroundImgWidget::~backgroundImgWidget()
{
}

void backgroundImgWidget::paintEvent(QPaintEvent *p2)
{
    QPixmap pixmap;

    pixmap.load(":/new/prefix1/Sunset.jpg");

    QPainter paint(this);
    paint.drawPixmap(0, 0, pixmap);
    QWidget::paintEvent(p2);
}

关于qt - 背景图像未显示在 QWidget 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2824447/

上一篇:SSIS数据转换

下一篇:SQL子查询问题

相关文章:

Qt5 链接器错误 : version `Qt_5' not found

c++ - 显示自定义图像并能够捕获鼠标输入

C++ 找出显卡支持的分辨率

Qt Creator 不显示 QML 文件夹

linux - Qt Creator 不允许我运行 GUI 应用程序

qt - 获取 QListView 中所有可见项目的简单方法

python - 持续时间未知的事件的进度条 (PySide)

c++ - 如何在 Qt Creator 中返回调试窗口

qt - 在QT中导入没有.lib或.h的DLL

qt - Q_PROPERTY 未显示