错误C2062:QT中的信号声明中意外出现“空”类型

时间:2018-06-28 05:46:45

标签: c++ windows qt signals

我是新手,正在编写一个头文件,在其中声明一个将发出信号的类。因此,我使用构造函数声明了我的类,并使用了两个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 :(得分:1)

需要在#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