Qt5:错误:“qt_metacall”不是 的成员
Qt5: error: ‘qt_metacall’ is not a member of
我试图用Qt更熟悉单数和插槽。我想在一个类中发出信号,并希望在另一个类中处理它。这是我的示例代码:
主.c
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
主窗口.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 ();
};
有关更多详细信息答案:请单击此处
另一种情况是,如果使用多个继承,则需要将QObject
作为第一个父类。
相关文章:
- std::to_string - 'to_string' 不是 'std' 的成员 - Visual Studio Code 1.42.0
- 将另一个类的对象传递到当前类C++的构造函数中(不是成员初始化)
- 在这种情况下,如何传递成员函数而不是函数?
- 无法将字符串数组声明为类成员而不是字符 (C++)
- FreeFileSync C++错误:'byte'不是 'std' 的成员
- "迭代器"和"const_iterator"不是 STL 容器的必需成员?
- Boost 绑定和"result_type":不是成员,对 c++03 友好
- basic_thread_pool 不是 boost::executors 的成员
- 如何解决 ReLU 不是构建时火炬::nn 错误的成员?
- 获取 C2039:"交换":不是成员错误,如何解决?
- 编译器认为我的MatrixXd构造是一个函数而不是成员
- Gcc 使用 memcpy 作为隐式复制赋值运算符,而不是成员复制
- 是否有任何类型特征控制成员类型(不是成员变量)
- 如果不是成员,则不显示 QLabel
- C++这怎么不是成员函数指针
- C++错误:不是成员或多个定义
- Qt设计器:嵌套小部件不是成员
- 为什么泛型编程设计更喜欢自由函数而不是成员函数
- 什么时候我必须使用好友函数而不是成员函数
- 我什么时候应该更喜欢非成员非友元函数而不是成员函数