为了对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 ) {}