我创建了一个继承自Qimage的类BWImage。因此,类的对象是Qimage类型。用以下内容创建对象后
BWImage image1;
现在如何将实际图像(已在资源结构中)分配给此对象?我没试过就试过这个:
image1 = QImage(":/lena.png");
作为我正在做的事情的概述:使用我可以调用的函数创建一个图像类来执行傅里叶变换等。
答案 0 :(得分:2)
您不能将基类的对象分配给派生的对象。
你的BWImage应该提供一个接受文件名的构造函数,并调用QImage构造函数。
BWImage(QString filename)
: QImage(filename)
{
}
答案 1 :(得分:1)
这里从QImage继承此功能是一个坏主意,因为您将使您的类具有Image所具有的所有公共接口方法。
这意味着您的最终用户将拥有一系列可用于调用的方法,而您似乎只希望允许他们调用方法来执行算法,例如:上述傅里叶变换。我建议改为使用QImage成员。这也被称为“has-a”而不是“is-a”关系。
无论哪种方式,您都需要使用构造函数或方法来设置QImage文件名。我会写这样的东西:
#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;
}