c++ - Qt5 : error: ‘qt_metacall’ is not a member of

标签 c++ qt

我尝试通过 Qt 更加熟悉信号和槽。 我想在一个类中发出一个信号,并想在另一个类中处理它。 这是我的示例代码:

main.c

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

class Emiter
{

signals:
    void anSignal ();
};

class MainWindow : public QMainWindow
{
    Q_OBJECT

private slots:
    void handleEmitter ();

public:
    MainWindow(QWidget *parent = 0);
};

#endif // MAINWINDOW_H

主窗口.cpp

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
   : QMainWindow(parent)
{
    auto emiter = new Emiter();

    connect( emiter,
             &Emiter::anSignal,
             this,
             &MainWindow::handleEmitter );
}

void
MainWindow::handleEmitter()
{
}

然后我得到这个错误:

error: ‘qt_metacall’ is not a member of ‘Emiter’          enum { Value =  sizeof(test(&Object::qt_metacall)) == sizeof(int) };

这是什么意思?

最佳答案

信号和槽仅在 QObject 派生类中可用,并且需要一个 Q_OBJECT 宏。

class Emiter : public QObject
{
     Q_OBJECT
public:

signals:
   void anSignal ();
};

更详细的答案:click here

关于c++ - Qt5 : error: ‘qt_metacall’ is not a member of,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48581493/

相关文章:

c++ - Qt Creator 在步骤 'make' 编译错误

c++ - gets() 导致内存损坏?

C++ Builder 异常 - StackTrace 为空?

c++ - 将服务器响应(std::string)转换为 png 文件

python - QtWebKit内存泄漏有什么解决方案吗?

qt - 当我将窗口移动到具有不同 DPI 的屏幕时,为什么我的 QML 项目没有被缩放?

c++ - map 迭代器删除不调用适当的析构函数

C++ 条件运算符的多语句

c++ - QTableView格式化数字

c++ - Qt错误: invalid use of incomplete type 'class QLabel'