在c++中创建Qlabel子类

Issue Subclassing a Qlabel C++

本文关键字:Qlabel 子类 创建 c++      更新时间:2023-10-16

我正在尝试使用头文件子类化QLabel,我在构造函数

上得到错误

智能感知:不允许间接非虚拟基类

class foo : public QLabel
{
    Q_OBJECT
    foo(QWidget* parent = 0) :  QWidget(parent)
    {
    }
    void mouseMoveEvent( QMouseEvent * event )
    {
        //Capture this
    }
};

有什么建议,为什么会发生这种情况,我如何修复它?

问题就在这里:

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

您继承了QLabel,但是您为基指定了QWidget。你应该这样写:

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

另外,请使用explicit以及Q_NULL_PTR或至少NULL来代替0。