【问题标题】:Can't emit signal in Android无法在 Android 中发出信号
【发布时间】:2015-04-20 07:48:07
【问题描述】:

我的项目中有这个信号;

void sendImage(cv::Mat &imgMat, QImage &imgQImage);

项目可以在 Mingw 和 Visual Studio 上编译,但是当我尝试为 Android 构建时,我收到“错误:没有匹配函数调用 imageReader::sendImage(cv::Mat&, QImage)”错误。

我在不同的项目上测试了我的 pro 文件,尝试清理/运行 qmake/clean/rebuild,从信号中删除 cv::Mat 但没有任何效果。

可能是什么问题?

编辑;

#ifndef READERMANAGERQMLINTERFACE_H
#define READERMANAGERQMLINTERFACE_H

#include <QObject>
#include <QDebug>

#include "readermanager.h"
class ReaderManagerQMLInterface : public QObject
{
    Q_OBJECT
public:
    explicit ReaderManagerQMLInterface(QObject *parent = 0);
    ~ReaderManagerQMLInterface();

    readerManager rManager;

private:

signals:
    void reqIm();

public slots:
    void sendImage(QImage &imgQImage);
};

#endif // READERMANAGERQMLINTERFACE_H

图像阅读器;

#ifndef IMAGEREADER_H
#define IMAGEREADER_H

#include <QObject>
#include <QImage>
#include <QDebug>
#include <QThread>
#include <QDir>
#include <QFile>

#include <opencv/cv.h>
class imageReader : public QObject
    {
        Q_OBJECT
    public:
        explicit imageReader(QObject *parent = 0);
        ~imageReader();
        imgHelpers imHelpers;

    signals:
        void sendImage(QImage &imgQImage);
    public slots:
        void requestImage();
        void setFrame(int frameID);
        void loadImage(QString fileName);
    }

我正在发出这样的信号;(如果我的 mat2Image 函数导致问题,我都尝试了)

void imageReader::requestImage()
{
    images.at(currentImageID).copyTo(this->currentImage);
    processImage(currentImage);
    emit sendImage(imHelpers.mat2Image(this->currentImage) );
  //emit sendImage(QImage("d:/test.bmp"));
}

【问题讨论】:

  • 能否贴出完整的类定义代码?
  • @Tay2510;我已经更新了定义。
  • 我认为imageReader 是您应该提供代码的类。
  • @Tay2510;我又用 imageReader 更新了。
  • 编译器说 "error: no matching function for call to imageReader::sendImage(cv::Mat&, QImage)" 因为你的信号定义是void sendImage(QImage &amp;imgQImage); 你不能连接到一个甚至不存在的信号。

标签: android qt


【解决方案1】:

我在 bugreports.qt.io 中打开了一个问题,看起来问题与 Visual Studio 有关。您可以在here找到详细信息。

编辑:当我说“问题与 Visual Studio 相关”时,我的意思是“Visual Studio 将我引向错误的方向”,我的发射线应该首先给出编译错误,如 gcc。

【讨论】:

  • 不,正如开发人员在错误报告中告诉您的那样,错误是您的信号应该具有 QImage 参数,而不是 QImage& 参数。它适用于 Visual Studio,但不应该。它在 gcc 中不起作用,这就是您在 Android 上遇到问题的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
  • 2018-08-10
  • 2020-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多