c++ - 错误 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
对我来说,代码看起来不错。但作为新手。我无法弄清楚这个问题。所以,请帮我解决这个问题。
解决方案
需要#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
推荐阅读
- python - VS Code 终端格式化
- python - 使用行分隔符转换数据框
- php - 删除成员 ID,第二次重定向
- amazon-web-services - Springboot rest api 在 Ec2 中不工作(404 错误),但在本地和其他 api 中工作,获取请求也在 ec2 中工作
- java - 不使用 for 循环打印出数组的最后一个数字
- php - PHP中的SQL语句在执行期间失败
- javascript - 将对象的 JavaScript 字典迭代地打印到 HTML div 中
- html - 您的浏览器不支持使用工具栏按钮或上下文菜单选项进行粘贴
- angular - 使用 Angular Elements 创建的 Angular Web 组件会覆盖 Angular Shell 项目的 app-root
- javascript - 如何在系统中创建一个名称与网页上特定页面上可用的字符串相同的新文件夹?