ベースクラスにウィジェットを作成しようとしていますが、私たちが呼び出す派生クラスがタイトルであることによってウィジェット内で変更されるのは唯一のものです。基底クラスの派生クラス値を使用する
class BaseView : public QWidget {
Q_OBJECT
public:
explicit BaseView(QWidget *parent = 0);
protected:
QString title;
virtual QString getTitle() const {
return title;
}
BaseView.cpp:
class DerivedView : public BaseView {
Q_OBJECT
public:
explicit DerivedView(QWidget *parent = 0);
protected:
QString getTitle() const {
return title;
}
そして、私は "正しい" にタイトルを設定する派生コンストラクタで:派生クラスのヘッダー内の
BaseView::BaseView(QWidget *parent) : QWidget(parent) {
title = "test"
}
void BaseView::createTopWidget() {
QGroupBox *topWidget = new QGroupBox(getTitle());
....
}
ザ・。
DerivedViewを作成してプログラムを実行すると、タイトルはまだ「テスト」です。私はこれをどうやって基本クラスの派生クラスの値を呼び出して取得しますか?
'getTitle'と' getTopWidgetMessage'との関係は何ですか?つまり、 'getTitle'を仮想として定義しますが、決してどこでも呼び出すことはできません - 何がポイントですか? – ildjarn
ああ、彼らは同じであると思われます。この例では名前を変更しましたが、名前を変更するのは忘れてしまいました。 – chikuba