首页 文章

Qt信号插槽无匹配功能

提问于
浏览
0

我收到以下错误:

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:

class MediaPlayer : public QObject
{
    Q_OBJECT

public:
    MediaPlayer();
    ~MediaPlayer();


public slots:
    void OnPlayMedia();
...


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

MainWindow Class:

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));
    ...
}

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

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

update 2 问题是MediaPlayer缺少QObject

class MediaPlayer : public QObject

添加此修复代码 .

2 回答

  • 0

    MediaPlayer应该从QObject派生:

    class MediaPlayer : public QObject
    {
        Q_OBJECT
    
    public:
        MediaPlayer(QObject* parent=0):QObject(parent){/* your init here*/}
        ~MediaPlayer();
    
    
    public slots:
        void OnPlayMedia();
    };
    
  • 0

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

相关问题