首页 > 解决方案 > 错误 C2062:QT 中的信号声明中出现意外类型“void”

问题描述

我是一个新手,我正在编写一个头文件,我在其中声明一个将发出信号的类。所以我用一个构造函数声明我的类,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

对我来说,代码看起来不错。但作为新手。我无法弄清楚这个问题。所以,请帮我解决这个问题。

标签: c++windowsqtsignals

解决方案


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

推荐阅读