我正在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),并具有其他一些不错的功能,例如资源压缩。