0

为了对 Qt 框架中的事件做出反应,我重新实现了一个 Qt 类(QLabel),即它的默认构造函数,带有一个参数。由于这给出了一个错误,我还用一个额外的参数重新实现了构造函数。现在它起作用了。

班级:

class myLabel : public QLabel
{
    Q_OBJECT
public:
    explicit myLabel(QWidget *parent = 0);
    explicit myLabel(QString x, QWidget *parent = 0);
    void mousePressEvent( QMouseEvent* e );
signals:
    void clicked();
};

构造函数:

myLabel::myLabel(QWidget *parent) : QLabel(parent)
{
}
myLabel::myLabel(QString x, QWidget *parent) : QLabel(parent)
{
    setText(x);
}

我的(初学者)问题是:为什么不运行基类的相应构造函数,就像[基类的所有其他方法(例如,我可以使用 setText() 而不重新实现它)]?还有一个极端:为什么我需要重新实现一个构造函数,尽管它不包含任何代码?

编辑:在发布之前,我不确定要搜索什么,但这个问题基本上已经在https://stackoverflow.com/a/347362/1619432中得到了回答

编辑:正如 bartimar 指出的那样,构造函数不是空的,因为它调用了基类的构造函数。这显然可以通过传递相应的参数来完成,如下所示:

myLabel::myLabel( const QString& x, QWidget* parent, Qt::WindowFlags f ) : 
    QLabel( x, parent, f ) {}
4

0 回答 0