[英]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.