我在使用Q_OBJECT创建类+子类时遇到了最困难的时间:
我有一个类几何和一些继承自几何的Geo_1PF,Geo_2,.. 我创建了这些类,一切运作良好.现在我想使用QMetaType,为此我需要声明Q_Object.一旦我使用Q_OBJECT/Q_DECLARE_METATYPE,我的问题就开始了.
我得到错误"未定义引用vtable for ..." 我试图在再次编译之前删除所有.o和所有moc_ .cpp.我在*.pro-File中添加了QT + = core但是我没有成功.
我是否必须在父类和cild类中放置Q_OBJECT/Q_DECLARE_METATYPE?
为什么我会收到这个错误?
有人可以帮帮我吗?
这是我的代码:
geometry.h: #ifndef GEOMETRY_H #define GEOMETRY_H #include#include #include #include class Geometry { // Q_OBJECT protected: public: Geometry(); virtual ~Geometry(void) {} virtual void write_LNE(); //Q_DECLARE_METATYPE(Geometry); #endif // GEOMETRY_H
-
geometry.cpp: #include "geometry.h" Geometry::Geometry() { qDebug() << "Constructor: hier ist Geometry"; } void Geometry::Haupt() { qDebug() << " Das hier ist die Haupt von Geometry ....." ; } void Geometry::write_LNE(){}
-
Geo_1PF.h: #ifndef GEO_1PF_H #define GEO_1PF_H #include "geometry.h" class Geo_1PF : public Geometry { // Q_OBJECT public: Geo_1PF(); ~Geo_1PF() {} virtual void write_LNE(); }; //Q_DECLARE_METATYPE(Geo_1PF); #endif // GEO_1PF_H
Geo_1PF.cpp:#include"Geo_1PF.h"
Geo_1PF::Geo_1PF() { }
Vladimir Ber.. 5
如果你想使用Q_OBJECT
你的类应继承QObject
或其子类
class Geometry : public QObject { Q_OBJECT //...
请参阅使用元对象编译器(moc)
如果你想使用Q_OBJECT
你的类应继承QObject
或其子类
class Geometry : public QObject { Q_OBJECT //...
请参阅使用元对象编译器(moc)