我尝试在QWidget中创建自己的小部件。在类的构造函数中我有:
Square(QWidget *parent = 0, const char *name = 0, WFlags fl = 0);
Square::Square(QWidget *parent = 0, const char *name = 0, WFlags fl)
: QWidget(parent, name, f)
{
if (!name)
setName("Game");
reset();
underMouse=false;
}
但我看到错误:'WFlags'尚未宣布
现在我重新制作了我的代码:
class Square : public QWidget
{
Q_OBJECT
public:
Square(QWidget *parent = 0);
};
并在square.cpp中:
Square::Square(QWidget *parent)
: QWidget(parent)
{
}
但我看到错误:
错误:未定义对'vtable for Square'的引用
错误:collect2:ld返回1退出状态 怎么了?如何在QWidget中声明类的构造函数?
谢谢。
答案 0 :(得分:9)
如果你正在使用Qt4,那么编译器是完全正确的。 WFlags
尚未宣布。它是Qt::WindowFlags
。此外,您不需要name
- 这是Qt3的事情。
请参阅http://doc.qt.io/archives/4.6/qwidget.html#QWidget
顺便说一句,我从不打扰允许WindowFlags
通过我的构造函数。如果您查看标准Qt小部件,它们也不会(例如http://doc.qt.io/archives/4.6/qpushbutton.html#QPushButton)。