【问题标题】:error C2062: type 'void' unexpected in signal declaration in QT错误 C2062:QT 中的信号声明中出现意外类型“void”
【发布时间】: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 来声明。它现在正在工作

标签: c++ windows qt signals


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2012-11-17
    相关资源
    最近更新 更多