我正在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);
}

该代码可以正常工作,但是这被认为是一种很好的方法吗?

最佳答案

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

09-20 16:55