I`mを使用して:QtのC++クラス+サブクラスQ_OBJECTを使用して、クラス+サブクラスを作成する上で最も困難な時間持つQ_OBJECT doesn't仕事
を私は、クラスジオメトリといくつかのクラスGeo_1PF、GeO_2系を持っています..それはジオメトリから継承します。私はすべてがうまくいったクラスを作りました。今私はQMetaTypeを使いたいので、Q_Objectを宣言する必要があります。 Q_OBJECT/Q_DECLARE_METATYPEを使用すると、問題が発生しました。
私は再びコンパイルする前に、すべてのの.oおよびすべてのmoc_ .cppファイルを削除しようとしましたエラー「のためにvtableのための未定義参照...」 を取得します。私はQT + =コアを* .pro-Fileに追加しましたが、成功しませんでした。
- 親クラスと子供クラスの両方にQ_OBJECT/Q_DECLARE_METATYPEを配置する必要がありますか?
- なぜこのエラーが発生しますか?
誰かが私を助けてくれますか?
これは私のコードです:
geometry.h:
#ifndef GEOMETRY_H
#define GEOMETRY_H
#include <QMetaType>
#include <QWidget>
#include <QObject>
#include <QDebug>
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() { }