【发布时间】:2013-11-16 18:49:10
【问题描述】:
我有以下用户类:
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"
需要做什么?
【问题讨论】:
-
你的意思是
Q_ENUMS(LineState)? -
Base的声明在哪里?请注意,与 Q_ENUMS 一起使用的枚举必须在 QObject 子类中声明。
-
我试过了,但对我没有帮助。在编写的文档中:
Use Q_GADGET instead of Q_OBJECT to enable the meta object system's support for enums in a class that is not a QObject subclass。 qt-project.org/doc/qt-5.0/qtcore/qobject.html -
对不起,我把类名弄错了(为了清楚起见,我只是在发布代码时重命名了一些变量):(