Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将QImage传递给方法指针_C++_Qt_Pointers_Object_Qimage - Fatal编程技术网

C++ 将QImage传递给方法指针

C++ 将QImage传递给方法指针,c++,qt,pointers,object,qimage,C++,Qt,Pointers,Object,Qimage,我正在开发一个QT图像应用程序。现在,我想从一个文件中加载一个图像,显示它,然后单击按钮就可以将其更改为灰度 下面是我对转换函数和图像对象的公开声明 public: QImage * MainWindow::greyScale(QImage * origin); QImage myImage; 在我的“打开文件”操作中,我初始化图像并将其显示在这样的标签中 myImage.load(fileName); myImage = myImage.scaled(400, 300); ui->i

我正在开发一个QT图像应用程序。现在,我想从一个文件中加载一个图像,显示它,然后单击按钮就可以将其更改为灰度

下面是我对转换函数和图像对象的公开声明

public:
QImage * MainWindow::greyScale(QImage * origin);
QImage myImage;
在我的“打开文件”操作中,我初始化图像并将其显示在这样的标签中

myImage.load(fileName);

myImage = myImage.scaled(400, 300);
ui->imageLabel->setPixmap(QPixmap::fromImage(myImage));
QImage newPic = greyScale(myImage);
这是我的灰度转换方法

QImage * MainWindow::greyScale(QImage * origin){
QImage * newImage = new QImage(origin->width(), origin->height(), QImage::Format_ARGB32);

QColor oldColor;

for(int x = 0; x<newImage->width(); x++){
    for(int y = 0; y<newImage->height(); y++){
        oldColor = QColor(origin->pixel(x,y));
        int average = (oldColor.red()+oldColor.green()+oldColor.blue())/3;
        newImage->setPixel(x,y,qRgb(average,average,average));
    }
}

return newImage;
}
我收到错误“无法将参数1从'QImage'转换为'QImage*”

我需要传递指针、引用或其他什么吗?我尝试了多种组合,但都不起作用。我对语法不太清楚

QImage * origin 

请提供帮助!!

让我们更改该调用并逐步理解它,为此,您需要注意两件事:方法返回什么,以及它需要什么参数

该方法明确地为新的
QImage
分配空间,并且返回指向该对象的指针

QImage* newPic = greyScale(myImage);
其次,方法需要现有
QImage
对象的内存地址(指针)。因此,我们继续给出
myImage
的地址:

QImage* newPic = greyScale(&myImage);

就这样。

让我们改变这个调用,一步一步地理解它,为此,您需要注意两件事:方法返回什么,以及它需要什么参数

该方法明确地为新的
QImage
分配空间,并且返回指向该对象的指针

QImage* newPic = greyScale(myImage);
其次,方法需要现有
QImage
对象的内存地址(指针)。因此,我们继续给出
myImage
的地址:

QImage* newPic = greyScale(&myImage);

就是这样。

您的方法接收到一个指向QImage的指针作为参数。将其更改为
QImage*main window::greyScale(const QImage&origin)
myImage
声明为指针:
QImage*myImage=new QImage(/*一些参数,如果需要的话*/)

您的方法将收到一个指向QImage的指针作为参数。将其更改为
QImage*main window::greyScale(const QImage&origin)
myImage
声明为指针:
QImage*myImage=new QImage(/*一些参数,如果需要*/);