C++ 没有这样的槽
我有这样一段代码: przystanki.hC++ 没有这样的槽,c++,qt,C++,Qt,我有这样一段代码: przystanki.h #ifndef PRZYSTANKI_H #define PRZYSTANKI_H #include "component.h" class Przystanki : public Component { public: Przystanki(QWidget *parent = 0); signals: void deletePosition(QString); public slots: void deleteListIt
#ifndef PRZYSTANKI_H
#define PRZYSTANKI_H
#include "component.h"
class Przystanki : public Component
{
public:
Przystanki(QWidget *parent = 0);
signals:
void deletePosition(QString);
public slots:
void deleteListItem();
void addListItem(QString label);
void createListItem(QString label, DodajPrzystanek* elem);
};
#endif // PRZYSTANKI_H
第h部分
#ifndef COMPONENT_H
#define COMPONENT_H
#include <QListWidget>
#include <QGroupBox>
#include "dodajprzystanek.h"
class Component : public QGroupBox
{
Q_OBJECT
public:
explicit Component(QString name, QWidget *parent = 0);
QListWidget* list;
};
#endif // COMPONENT_H
我得到的是:
loaded the Generic plugin
Object::connect: No such slot Component::addListItem(QString)
Object::connect: No such signal Component::deletePosition(QString)
它发生在我将插槽和信号的定义从组件移动到它的派生类Przystanki之后。我已经删除了整个构建目录,运行clean,再次运行qmake和build,但没有任何帮助。有人能解释一下我做错了什么吗?你的类Przystanki缺少Q_OBJECT宏。添加它,将przystanki.h添加到.pro文件的标题中(如果还没有),然后重新运行qmake。我在这段代码中没有看到任何相关的
connect
调用。另外,应该有文件名和行,连接发生在哪里。我已经编辑了这个问题。我删除了一些没有插槽的第一行,因为在这种情况下,插槽确实丢失了。我已经尝试过这样做,但后来我得到了链接器错误,我不理解。错误是:未定义对'vtable for Przystanki'@WojciechReszelewski的引用,这意味着,*.moc未链接到。可能您的构建系统有一些问题。我已经删除了整个构建目录,清理,运行qmake,然后再次构建,它成功了。谢谢。
loaded the Generic plugin
Object::connect: No such slot Component::addListItem(QString)
Object::connect: No such signal Component::deletePosition(QString)