当前位置:  开发笔记 > 编程语言 > 正文

使用Q_OBJECT的Qt c ++ class + subclass不起作用

如何解决《使用Q_OBJECT的Qtc++class+subclass不起作用》经验,为你挑选了1个好方法。

我在使用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)



1> Vladimir Ber..:

如果你想使用Q_OBJECT你的类应继承QObject或其子类

class Geometry : public QObject
{
    Q_OBJECT

//...

请参阅使用元对象编译器(moc)

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有