Qt - 没有匹配函数来调用连接

Qt - No matching function to call connect

本文关键字:函数 调用 连接 Qt      更新时间:2023-10-16

我正在尝试在Qt中执行经典的连接,我已经做了一千次。但是由于我不知道的某种原因,我现在不能:我收到错误

error: no matching function for call to 'gameView::connect(QComboBox*&, const char*, gameLogic*&, const char*)'
     connect(_dropdown, SIGNAL(activated(int)), _model, SLOT(resize(int)));
                                                                         ^

我的代码如下:(游戏视图.h)

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QHBoxLayout>
#include <QGridLayout>
#include <QPushButton>
#include <QComboBox>
#include <QVector>
#include <QTime>
#include "gamelogic.h"
class gameView : public QWidget
{
    Q_OBJECT
    public:
...
        QComboBox*_dropdown;
...
        gameLogic* _model;
...
        explicit gameView(QWidget *parent = 0);
        ~gameView();

    };
#endif // MAINWINDOW_H

(游戏视图.cpp)

#include "gameview.h"
gameView::gameView(QWidget *parent) :
    QWidget(parent)
{
    _model = new gameLogic();
...
    _dropdown = new QComboBox();
...
    _dropdown->addItem("4");
    _dropdown->addItem("6");
    _dropdown->addItem("8");
    connect(_dropdown, SIGNAL(activated(int)), _model, SLOT(resize(int))); //error here
... 
}

(游戏逻辑.h)

#ifndef GAMELOGIC_H
#define GAMELOGIC_H
#include <QVector>
#include <QTimer>

class gameLogic
{
    Q_OBJECT
public:
    gameLogic();
...
public slots:
    void resize(int newn);

};
#endif // GAMELOGIC_H

请帮忙!

你的gameLogic类应该继承QObject,否则Qt信号/时隙机制将不起作用。尝试将class gameLogic更改为class gameLogic : public QObject

显然仅仅添加Q_OBJECT是不够的。将gameLogic变成class gameLogic : public QObject后,连接工作。