Qt:正确存储自定义小部件的图像资源

时间:2011-09-30 07:41:57

标签: c++ qt widget

我在Qt中制作自定义小部件,并将图像作为背景绘制。对于窗口小部件的所有实例,背景图像应完全相同。我想知道我是否以适当的方式这样做。

以下是我现在的做法:

// QMyWidget.h
class QMyWidget : public QWidget
{
 /* some stuff.. and then: */
protected:
  static QImage *imgBackground;
}

// QMyWidget.cpp
QImage *QMyWidget::imgDial = NULL;

QMyWidget::QMyWidget(QWidget *parent) : QWidget(parent)
{
    if(imgBackground== NULL)
    {
        imgBackground= new QImage();
        imgBackground->load(":/Images/background.png");
    }
}

void QMyWidget::paintEvent(QPaintEvent *e)
{
    QPainter painter(this);
    painter.drawImage(QPoint(), *imgBackground);
}

代码工作得很好,但是这被认为是一种很好的方法吗?

1 个答案:

答案 0 :(得分:2)

这是实现它的一种方式,如果你只处理单个图像,这是一个相当好的方法,但如果你决定扩展和使用一些自定义资源,那么Qt Resource System就是更好的方法。它可以节省您的代码时间(不需要重复执行QImage),还有一些其他很好的功能,如资源压缩。