Qt не излучает сигнал - PullRequest
0 голосов
/ 28 июня 2018

Я новичок, я пытаюсь передать сигнал из заголовочного файла и поймать его в своем основном классе. Для этого написали этот заголовочный файл: -

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 (), но никогда не излучает сигнал, или, может быть, он излучает сигнал, но я не могу его уловить. Поэтому, пожалуйста, скажите мне, что именно мне здесь не хватает.

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Чтобы компилятор помог вам, пожалуйста, обновитесь до C ++ 11 или более новой версии и напишите connect (клавиатура, & Keyboard :: Keyboard_respoense, this & SnakeCaseClass: send_to_MBU);

0 голосов
/ 28 июня 2018

В функции connect нет необходимости упоминать имена параметров. просто объявите тип аргумента. Подключите так: -

connect(keyboard,SIGNAL(keyboard_respoense(QString)),this,SLOT(send_to_MBU(QString))); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...