ошибка C2062: тип 'void' неожиданный в объявлении сигнала в QT - PullRequest
0 голосов
/ 28 июня 2018

Я новичок, я пишу заголовочный файл, в котором я объявляю класс, который будет излучать сигнал. Поэтому я объявляю свой класс с помощью конструктора, двух int переменных, которые я создаю private, а затем я определяю свой signal. Вот мой .h файл:

#ifndef KEYBOARD_H
#define KEYBOARD_H

class KeyBoard{
public:
    KeyBoard();
    int keyboard_update();
private:
    int level;
    int sub_level;
signals:
    void send_to_MBU(QString message);
};

#endif

Теперь в .cpp части, я просто посылаю сигнал в конструктор. Вот код в .cpp части:

#include "KeyBoard.h"

KeyBoard::KeyBoard()
{
    level = 0;
    sub_level = 0;
    emit send_to_MBU("PRESS ENTER TO SELECT TRAIN"): 
}

int KeyBoard::keyboard_update()
{
    return 1;
}

Но когда я компилирую свой код, я получаю эту ошибку в своем объявлении сигнала:

error C2062: type 'void' unexpected

Для меня код выглядит нормально. Но как новичок. Я не могу понять проблему. Поэтому, пожалуйста, помогите мне решить эту проблему.

1 Ответ

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

Нужно объявить #include <QObject> в .h файле для успешного использования сигналов в QT. Это единственное, чего не хватает в заголовочном файле. новый код выглядит так: -

#ifndef KEYBOARD_H
#define KEYBOARD_H

#include <QObject>

class KeyBoard : QObject{
    Q_OBJECT
public:
    KeyBoard();
    int keyboard_update(char* recieved_key);
private:
    int level;
    int sub_level;
signals:
    void send_to_MBU(QString message);
};

#endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...