将图像分配给继承自Qimage的类的对象

Assigning an image to an object of a class that inherits from Qimage

本文关键字:Qimage 对象 继承 图像 分配      更新时间:2023-10-16

我创建了一个继承自Qimage的类BWImage。因此,类的对象是Qimage类型的。使用创建对象后

BWImage image1;

现在如何将实际图像(已在资源结构中)分配给该对象?我尝试过,但没有运气:

image1 = QImage(":/lena.png"); 

作为我正在做的事情的概述:创建一个带有函数的图像类,我可以调用这些函数来执行傅立叶变换等。

不能将基类的对象分配给派生对象。

您的BWImage应该提供一个接受文件名的构造函数,并调用QImage构造函数。

BWImage(QString filename) 
  : QImage(filename) 
{
}

从QImage继承此功能是个坏主意,因为您的类将拥有Image所拥有的所有公共接口方法。

这意味着你的最终用户将有一堆方法可供调用,而你的愿望似乎只是允许他们调用方法来执行算法,例如前面提到的傅立叶变换。我建议换一个QImage会员。这也被称为"has-a",而不是"is-a"关系船。

无论哪种方式,您都需要有构造函数或方法来设置QImage文件名。我会写这样的东西:

图像处理程序.h

#include <QImage>
#include <QDebug>
class ImageHandler
{
public:
    ImageHandler(const QString &fileName)
        : m_image(fileName)
    {
        ...
    }
    // Or just use an explicit method like this
    void loadImage(const QString &fileName)
    {
        if (!m_image.load(fileName)
            qDebug() << "Failed to load the image from file:" << fileName;
    }
    ...
private:
    QImage m_image;
}