一 编绎时就出错,信号与槽连接失败
    1 报错如下
    error C2664: “QMetaObject::Connection QObject::connectImpl(const QObject ,void **,const QObject ,
    void *,QtPrivate::QSlotObjectBase ,Qt::ConnectionType,const int ,const QMetaObject )”:
    无法将参数 1 从“const TaskBegin ”转换为“const QObject ” (编译源文件 MainFrame.cpp)
    失败原因:信号的sender并非继承自QObject
    解决方案:不要用QThreadPool的类(继承自QRunable),因为这种方法不能发送信号

    二 编绎成功,但信号与槽连接失败
    1 失败原因:槽函数并没有声明在类的public slots(或private slots或protected slots)里
    解决方案:

    1. class TaskPause : public QObject
    2. {
    3. Q_OBJECT
    4. public:
    5. int m_row;
    6. TaskPause(int row) : m_row(row) {};
    7. void run();
    8. signals:
    9. void sigPause();
    10. public slots:
    11. void onPause();
    12. };

    2 失败原因:信号和槽之间存在参数传递,但是二者的参数数量或者类型不一致(信号里的参数数量可以多于槽函数里的参数数量,但是二者都有的参数,类型必须对应);

    3 失败原因:使用connect时, 在槽函数或者信号中加入了形参
    解决方案:不要写形参
    connect(sender, SIGNAL(sendMessage(int)), receiver, SLOT(getMessage(int)));

    4 报错如下
    Object::connect: No such signal multiRobots::moveToOnePoint (QList)a in.\multiRobots.cpp:34
    Object::connect:(sender name: ‘multiRobotsClass’)
    失败原因:信号和槽之间存在自定义参数传递,但是传递的类型没有注册。
    解决方案:
    #include
    qRegisterMetaType > (“QList“);