Qt C ++ Q_OBJECT错误未定义对vtable的引用

344

使用Q_OBJECT宏时,我经常遇到问题:(我使用QT Creator 2.8.1 / Qt 4.8.4),但我之前询问过,但这似乎导致了更多的麻烦。有谁能够帮我?我完全迷路了。

我有一个庞大的C ++程序,其中包含约50多个类,以适应新的需求。现在,我在src目录中的新目录中创建了一个新的(非常简单的)父类和3个子类。为此,我使用了模板Qt-> Qt Designer表单类。(我这样做是因为即使我不需要* .ui文件,它也会自动实现Q_OBJECT。然后,我删除了所有与ui文件有关的内容以及ui文件本身。)

当我运行程序时,我总是会得到很多“ .v错误定义的对vtable的未定义引用”当我删除所有Q_OBJECT时,我的程序运行正常。但是后来我无法使用以后需要的信号槽。

我在互联网上查询了它,发现它与我的构建目录中的.pro-file / .o-Files有关。我(几次)试图删除包括.pro.user的所有.o文件,然后再次编译。有时我仍然会收到错误,有时却没有。

这是我的代码(这三个子类目前是相同的):

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()
    {
    }
    

我找到了手动做qmake的建议。我从不手动使用qmake。

  • 如何以及从哪个目录执行此操作?究竟我该怎么写qmake……。?
  • 使用模板Qt-> Qt Designer表单类创建这些类是否正确?
  • 我是否必须在另一个目录中创建类?

  • 我必须在+ .pro-File中添加任何其他条目吗?

  • 并在文件中将它们放置在文件中的什么位置?

  • 我是否需要更改makefile中的任何内容?如果是这样呢?

谢谢

WLGfx

要在您的类中使用QOBJECT宏,您需要扩展QObject。

class MyObject: public QObject
{
Q_OBJECT

public:
MyObject (QObject *_parent);

.....

};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在QT上的C ++中解决对vtable的未定义引用

来自分类Dev

Qt:对`vtable的未定义引用

来自分类Dev

Qt对`vtable for Msnger'的未定义引用

来自分类Dev

Qt:对“ vtable”的未定义引用

来自分类Dev

QT C ++中对全局变量的未定义引用

来自分类Dev

多个未定义的引用 - Qt Creator - vJoy C++

来自分类Dev

使用CONFIG + = staticlib构建Qt应用会导致“未定义对vtable的引用”错误

来自分类Dev

Qt C ++-对...内联QImage自定义函数的未定义引用

来自分类Dev

Qt Quick + CMake + 自定义 QObject 导致对“vtable”的未定义引用

来自分类Dev

(史诗)QT编译错误:“未定义引用”

来自分类Dev

C ++ Singleton:“未定义引用”错误

来自分类Dev

C ++“未定义引用”错误

来自分类Dev

在Qt中未定义对QDeclarativePropertyMap的引用

来自分类Dev

C ++ Qt插槽错误

来自分类Dev

在Windows中使用带有CLion的CMake(mingw)在C ++中未定义的Qt5引用

来自分类Dev

Qt 5 cmake失败,在Hello World上未定义对vtable的引用,使用inc和src作为子目录

来自分类Dev

C ++错误:未定义的引用...和的多个定义

来自分类Dev

C ++ Qt返回对临时引用

来自分类Dev

C ++未定义的引用

来自分类Dev

Snort错误:plugbase.c:对“设置”的未定义引用

来自分类Dev

在C程序中出现错误“对gettid的未定义引用”

来自分类Dev

错误:编译C ++时出现“未定义引用”

来自分类Dev

CMake CUDA C ++链接错误-对`someFunction()`的未定义引用

来自分类Dev

Snort错误:plugbase.c:对“设置”的未定义引用

来自分类Dev

C++ 错误“对 GPScoord::(double,double) 等的未定义引用”

来自分类Dev

Qt(C ++):函数的多个定义

来自分类Dev

Qt C ++,编译错误

来自分类Dev

QT,socket.io和boost集成未定义引用错误

来自分类Dev

QT,socket.io和boost集成未定义引用错误

Related 相关文章

  1. 1

    如何在QT上的C ++中解决对vtable的未定义引用

  2. 2

    Qt:对`vtable的未定义引用

  3. 3

    Qt对`vtable for Msnger'的未定义引用

  4. 4

    Qt:对“ vtable”的未定义引用

  5. 5

    QT C ++中对全局变量的未定义引用

  6. 6

    多个未定义的引用 - Qt Creator - vJoy C++

  7. 7

    使用CONFIG + = staticlib构建Qt应用会导致“未定义对vtable的引用”错误

  8. 8

    Qt C ++-对...内联QImage自定义函数的未定义引用

  9. 9

    Qt Quick + CMake + 自定义 QObject 导致对“vtable”的未定义引用

  10. 10

    (史诗)QT编译错误:“未定义引用”

  11. 11

    C ++ Singleton:“未定义引用”错误

  12. 12

    C ++“未定义引用”错误

  13. 13

    在Qt中未定义对QDeclarativePropertyMap的引用

  14. 14

    C ++ Qt插槽错误

  15. 15

    在Windows中使用带有CLion的CMake(mingw)在C ++中未定义的Qt5引用

  16. 16

    Qt 5 cmake失败,在Hello World上未定义对vtable的引用,使用inc和src作为子目录

  17. 17

    C ++错误:未定义的引用...和的多个定义

  18. 18

    C ++ Qt返回对临时引用

  19. 19

    C ++未定义的引用

  20. 20

    Snort错误:plugbase.c:对“设置”的未定义引用

  21. 21

    在C程序中出现错误“对gettid的未定义引用”

  22. 22

    错误:编译C ++时出现“未定义引用”

  23. 23

    CMake CUDA C ++链接错误-对`someFunction()`的未定义引用

  24. 24

    Snort错误:plugbase.c:对“设置”的未定义引用

  25. 25

    C++ 错误“对 GPScoord::(double,double) 等的未定义引用”

  26. 26

    Qt(C ++):函数的多个定义

  27. 27

    Qt C ++,编译错误

  28. 28

    QT,socket.io和boost集成未定义引用错误

  29. 29

    QT,socket.io和boost集成未定义引用错误

热门标签

归档