c – 基于QWidget的Qt小部件

我尝试在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中声明类的构造函数?

谢谢.

解决方法:

如果您使用Qt4,编译器是绝对正确的. WFlags尚未宣布.这是Qt :: WindowFlags.此外,你不需要名字 – 这是Qt3的事情.

http://doc.qt.io/archives/4.6/qwidget.html#QWidget

顺便说一句,我从不打扰允许通过我的构造函数传递WindowFlags.如果你看一下标准的Qt小部件,他们也不会(例如http://doc.qt.io/archives/4.6/qpushbutton.html#QPushButton).

上一篇:c – 当objectname包含特定字符串时,QWidget findChildren


下一篇:QT QMainWindow、QDialog、QWidget之间的区别