错误 C2062:QT 中的信号声明中出现意外类型“void”
Posted
技术标签:
【中文标题】错误 C2062:QT 中的信号声明中出现意外类型“void”【英文标题】:error C2062: type 'void' unexpected in signal declaration in QT 【发布时间】:2018-06-28 05:46:44 【问题描述】:我是一个新手,我正在编写一个头文件,我在其中声明一个将发出信号的类。所以我用一个构造函数声明我的类,两个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
对我来说,代码看起来不错。但作为新手。我无法弄清楚这个问题。所以,请帮我解决这个问题。
【问题讨论】:
您可能缺少一个标头,该标头执行使signals:
发挥作用的魔法。
我们开始吧。 From QT Documentation: "所有包含信号或槽的类必须在其声明的顶部提及Q_OBJECT
。它们还必须(直接或间接)派生自QObject
"
@user4581301 :谢谢,我缺少#include 需要在.h
文件中声明#include <QObject>
才能在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
【讨论】:
以上是关于错误 C2062:QT 中的信号声明中出现意外类型“void”的主要内容,如果未能解决你的问题,请参考以下文章