我尝试通过 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/