3

ウィジェット (QLineEditこの例では a を使用します) を というクラスにプロモートするために必要なものがすべて揃っているとしましょうMyClass。独自の関数をMyClass継承して定義します。QWidget

QLineEditを のインスタンスにプロモートするとMyClass、バックグラウンドで何が起こりますか? 私QLineEditは が の子であることを知っているQWidgetのでMyClass、 とQLineEditはその要素に関連しています。しかし、プロパティはどうなりますか?は にQLineEdit固有のプロパティを保持していQLineEditますか? 「タイプ」をどのように変更しますか?

(がクラスから継承する)QLineEditのプロパティを保持しているという事実を除けば、このウィジェットのプロモーションの背後で何が起こっているのかわかりません。QWidgetMyClass

4

2 に答える 2

2

次の場合、代わりに QLineEdit から MyClass に昇格する場合:

QLineEdit *lineedit=new QLineEdit(centralWidget);

あなたが持っているでしょう:

MyClass * lineedit=new MyClass(centralWidget);

また、通常の方法で MyClass から関数を呼び出すことができます。ui.h ファイルを開いて、自分の目で確かめることができます。

于 2012-09-10T01:25:34.810 に答える
2

MyClassパブリックな方法で拡張されるためQLineEdit、すべてのプロパティを継承し、完全に置き換えることができQLineEditます。Qt Creator は実装を変更するだけです。それがまさにポリモーピズムの「目的」です。Qt Creator は、追加のメソッドについて何も認識しておらず、その必要もありませMyClassQLineEditMyClass is-a である ため、これは機能しQLineEditます。

于 2012-09-09T21:24:45.737 に答える