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