在.cpp文件中声明一个小部件

时间:2014-03-13 08:03:14

标签: qt

我有一个课程QWidget

 class Boo : public QWidget {
      Q_OBJECT
 public:
      Boo(QWidget* parent) : QWidget(parent) {}
 };

如果我只是将它添加到cpp文件中,我会收到以下错误:

... [Boo::Boo(QWidget*)]+0x71): undefined reference to `vtable for Boo'

为什么会这样?

是否可以将类添加到.cpp文件中?

2 个答案:

答案 0 :(得分:0)

答案是你绝对可以在* .cpp文件中添加这样的声明,它没有任何问题,但是你不应该忘记MOC * .cpp文件,所以要生成和检查适当的* _moc.cpp文件它包含在项目中。如果你使用qmake你应该没问题,如果你使用的是VisualStudio,你应该重新生成VS项目文件。

主要原因是此错误是您没有生成或包含在项目中的* _moc.cpp文件。

答案 1 :(得分:-1)

不,您不能仅将类添加到构建系统MOC中的.cpp文件中,而只能将头文件添加到头文件中。类声明需要位于构建系统MOC编写的头文件中。