【问题标题】:c++, how to transfer function that return value to funcc ++,如何将返回值的函数传递给func
【发布时间】:2017-07-11 16:06:23
【问题描述】:

所以我的课程看起来像:

class CameraView
{
public:
CameraView(QImage viewImage);
QImage GetView() const;
double Getf() const;


void SetF(double value);


protected:
    double f, c;

QImage ViewImage;
};

cpp:

   CameraView::CameraView(QImage viewImage){
    this->ViewImage = viewImage;
}

QImage CameraView::GetView() const{
    return this->ViewImage;
}

我想在函数显示中获取 GetView。因此我需要将CameraView类实例的QImage传递给函数show。

void MainWindow::Show(QImage const *img,QGraphicsView *view){

QGraphicsScene *tempImg = new QGraphicsScene ();
tempImg->addPixmap(QPixmap::fromImage(*img));

view->setScene(tempImg);
}

void MainWindow::on_pushButton_clicked()
{
QImage RIImg("/root/Desktop/label.jpg");
CameraView view(RIImg);
//error
this->Show(&(view.GetView()), ui->NormalImg);///
}

我需要很好地解决这个问题,所以我们将 QImage 的实例等同于 view.GetView() 并将实例转移到函数 Show() 的方式看起来很糟糕,请本网站上的任何人知道我们如何决定它?

【问题讨论】:

  • 您需要将 CameraView 的实例传递给 Show
  • 不太清楚。你想把什么价值转移到什么功能上?你知道函数可以带参数,对吧?
  • 在您的MainWindow::Show 函数中,您需要创建CameraView 的实例才能执行CameraView::GetView。见函数MainWindow::on_pushButton_clicked()
  • GetView 返回QImageShow 想要 QImage* 现在看到问题了吗?
  • @tobi303:问题是on_pushButton_clicked()是一个事件处理程序,它的接口不能改变。

标签: c++ qt function


【解决方案1】:

尝试将CameraView 成员添加到您的MainWindow 类。

顺便说一句,您可以在没有this-> 语法的情况下访问它:

class MainWindow
{
 // ...
  CameraView m_camera_view;
};

void MainWindow::on_pushButton_clicked()
{
  QImage RIImg("/root/Desktop/label.jpg");
  CameraView m_camera_view(RIImg);
  Show(m_camera_view.GetView(), ui->NormalImg);///
}

【讨论】:

  • 正如我上面提到的:GetView 返回QImageShow想要QImage*
  • /root/Desktop/QTprogramms/image_ex/AffinTransf/mainwindow.cpp:9: 错误:没有匹配函数调用'CameraView::CameraView()' ui(new Ui::MainWindow) ^
  • 您的错误意味着您需要实现默认构造函数。另一种选择是使用共享指针并在on_pushButton_clicked 方法中动态分配。
猜你喜欢
  • 2021-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多