c++ - Qt、枚举和元对象编译器

标签 c++ qt enums qgadget

我有以下用户类:

class MyLine : public QLineEdit
{
    Q_OBJECT

    Q_ENUMS(Base::LineState)

public:
    explicit MyLine (QWidget *parent = 0);
};

我还有包含所有全局枚举的基类:

class Base
{
    Q_GADGET

    Q_ENUMS(LineState)

public:
    // The states for MyLine
    enum LineState
    {
        Empty, Correct, Wrong
    };
};

当我编译此代码时出现以下错误:undefined reference to "Base::staticMetaObject"

需要做什么?

最佳答案

您不需要首先在 MyLine 类中使用 Q_ENUMS(Base::LineState),您在 Base 类中生成此元数据.

此外,您还必须将带有 Base 类的头文件添加到 pro 文件中的 HEADERS 列表中,以便 moc 工具可以为元数据生成代码。

关于c++ - Qt、枚举和元对象编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20022313/

相关文章:

c++ - 如何在 QT Creator 中运行 Boost 单元测试?

ios - 使用枚举来执行函数?

c# - 检查值是否在枚举范围内而不使用 IsDefined

java - 在jsp中使用枚举实例内部类

c++ - 图遍历问题

C++:cout 语句使我的程序失控?

c++ - 将图像路径发送到另一个函数

c++ - 如何在带有 C++ 的 Ubuntu 中使用 wmi

c++ - 可变参数的冲突类型

c++ - 以 1kB block 读取文件并使用 cstdio 写入另一个文件