繁体   English   中英

Qt不发射信号

[英]Qt not emitting signal

我是新手,我试图从头文件中发出信号并将其捕获到我的主类中。 为此已经写了这个头文件:

KeyBoard.h:-

#ifndef KEYBOARD_H
#define KEYBOARD_H

#include <QObject>
#include <QDebug>

class KeyBoard : public QObject{
    Q_OBJECT
public:
    KeyBoard();
    int keyboard_update(QByteArray recieved_key);
signals:
    void keyboard_respoense(QString message);
private:
    int level;
    int sub_level;

};

#endif 

KeyBoard.cpp:-

#include "KeyBoard.h"

KeyBoard::KeyBoard()
{
    level = 0;
    sub_level = 0;
}

int KeyBoard::keyboard_update(QByteArray recieved_key)
{
    qDebug() << "recieved key == " << recieved_key;
        qDebug() << "button  == " << recieved_key.at(8);    
    emit keyboard_respoense("PRESS ENTER TO SELECT TRAIN"); 

    return 1;
}

在我的主要课堂上,我正在捕捉这样的信号:

keyboard = new KeyBoard;
connect(keyboard,SIGNAL(keyboard_respoense(QString message)),this,SLOT(send_to_MBU(QString message)));

但是当我使用此行调用keyboard_update函数时:

keyboard->keyboard_update(raw_data_MBU_qb);

它进入keyboard_update()函数,但从不发出信号,或者可能是发出信号,但我无法捕获它。 所以,请告诉我我在这里到底想念什么。

connect功能中,无需提及参数名称。 只需声明参数类型即可。 像这样连接:

connect(keyboard,SIGNAL(keyboard_respoense(QString)),this,SLOT(send_to_MBU(QString))); 

为了让编译器为您提供帮助,请更新至C ++ 11或更高版本并编写connect(keyboard,&Keyboard :: Keyboard_respoense,this,&SnakeCaseClass:send_to_MBU);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM