gpt4 book ai didi

qt - 生成的 moc 名称不正确

转载 作者:行者123 更新时间:2023-12-04 13:33:44 27 4
gpt4 key购买 nike

我正在开发一个使用 cmake 的基于 Qt 的项目。我所有生成的 moc 文件都被命名为 *.moc ,但我有一些文件,它们生成的 moc 文件的名称为 moc_*.cpp ,不是 *.moc .为什么会发生这种情况以及如何修复这些文件。

编辑:

  • 我想说这些类是从 QObject 继承的,并且有 Q_OBJECT 和 Q_DECLARE_PUBLIC 宏,除非有它们的 .moc,否则它们不会与我一起编译。
  • 我必须在我的 .cpp 文件中包含 .moc 文件。

  • - 让我发疯的事情是,我有一个生成 .moc 的相同类(与我的类相同的实现),但我的类生成 moc_*.cpp。

    最佳答案

    您不必在 Q_OBJECT 使用的每种情况下都包含 *.moc 文件。 .moc 文件仅为在 .cpp 文件中声明的类生成。在其他情况下, moc 生成 moc_*.cpp ,其中包含自己的基于 Q_OBJECT 的类。你没有什么可担心的。从您的 cpp 文件中删除 *.moc 包含。例如:

    主程序

    class E: public QObject
    {
    Q_OBJECT
    };

    moc 将生成要包含在 main.cpp 中的 main.moc 文件

    另一个例子

    类.h
    class E: public QObject
    {
    Q_OBJECT
    public:
    void member();
    };

    类.cpp
    #include "class.h"

    void E::member()
    {
    }

    moc 将生成包含 class.h 的 moc_class.cpp 并且是单独的编译单元

    关于qt - 生成的 moc 名称不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11678106/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com