Qt信号插槽无匹配功能

时间:2015-09-16 19:02:16

标签: qt

我收到以下错误:

mainwindow.cpp:168:错误:没有匹配函数来调用'MainWindow :: connect(MainWindow *,const char *,MediaPlayer *&,const char *)'      QObject :: connect(this,SIGNAL(PlayMedia()),_ MediaPlayer,SLOT(PlayMedia()));                                                                                 ^

C:\ Qt \ Qt5.5.0 \ 5.5 \ mingw492_32 \ include \ QtCore \ qobject.h:213:错误:'struct QtPrivate :: FunctionPointer'中没有名为'Object'的类型

MediaPlayer类:

class MediaPlayer : public QObject
{
    Q_OBJECT

public:
    MediaPlayer();
    ~MediaPlayer();


public slots:
    void OnPlayMedia();
...


void MediaPlayer::OnPlayMedia()
{
    qDebug() << "PlayMedia";
}

MainWindow类:

class MainWindow : public QMainWindow
{
    Q_OBJECT

signals:
    void PlayMedia();

private:
    MediaPlayer *mMediaPlayer;
...


void MainWindow::Initialize()
{
    mMediaPlayer = new MediaPlayer();
    connect(this, SIGNAL(PlayMedia), mMediaPlayer, SLOT(OnPlayMedia));
    ...
}

但每次我构建项目时都会收到错误

更新1: 我更新了代码,但仍然收到错误

更新2 问题是MediaPlayer缺少QObject

class MediaPlayer : public QObject

添加此修复代码。

2 个答案:

答案 0 :(得分:0)

我的问题是我的类MediaPlayer缺少QObject的继承。我更新了上面的原始代码以显示此内容

答案 1 :(得分:0)

MediaPlayer应该来自QObject:

Needle