问题对Qlabel C ++进行子类化

时间:2014-06-24 17:16:20

标签: c++ qt intellisense qtgui qlabel

我试图使用头文件子类化QLabel,我在构造函数上得到错误

  

IntelliSense:不允许使用间接非虚拟基类

class foo : public QLabel
{
    Q_OBJECT

    foo(QWidget* parent = 0) :  QWidget(parent)
    {

    }

    void mouseMoveEvent( QMouseEvent * event )
    {
        //Capture this
    }

};

为什么会发生这种情况以及我如何解决这个问题的任何建议?

1 个答案:

答案 0 :(得分:2)

问题在于:

foo(QWidget* parent = 0) :  QWidget(parent)

您继承自 QLabel ,但您为基地指定了QWidget。你应该写这个内容:

explicit foo(QWidget* parent = Q_NULLPTR) :  QLabel(parent)
//                                           ^^^^^^

另外,请使用explicit作为该构造函数以及Q_NULL_PTR或至少NULL而不是0。