qtデザイナで作成されたフォームから継承する最も好ましい方法は何ですか?Qtのフォームから継承する最善の方法
答えて
フォーム自体を継承する良い直接的な方法はありません。フォーム用に作成されたクラスを継承する方がよいでしょう。
1)基本クラスの子UI(一部のコンテナ)
のプレースホルダを指定します。あなたも可能である他のいくつかのフォームを、追加したい場合はclass testBase : public QWidget
{
Q_OBJECT
public:
testBase (QWidget *parent = 0);
~testBase();
protected: // here was private
Ui::testBaseClass baseUi; // rename this
};
testBase ::testBase (QWidget *parent)
: QWidget(parent)
{
ui.setupUi(this);
}
も、あなたには、いくつかの追加作業を行う必要があります
2)ウィザードで子フォームを作成します。基本クラスを祖先に渡さないでください。ウィザードでは、QWidgetから継承すると言ってください。
3)派生クラスのフォームを作成した後、派生したものをあなたのベースになるように書き直します。コンストラクタを変更 、ラインui.setupUi(this)
はまた、派生クラスは、ベースクラスの形式を変更しないことに注意ui.setupUi(baseUi.placeholder)
class testDerived : public testBase
{
Q_OBJECT
public:
testDerived (QWidget *parent = 0);
~testDerived();
private:
Ui::testDerivedClass ui;
};
testDerived::testDerived(QWidget *parent)
: testBase (parent)
{
ui.setupUi(baseUi.placeholder);
}
に変更する必要があり、それを拡張します。フォームコンストラクタで基本フォームに項目を追加または削除することはできませんが、プレースホルダとして指定したコンテナは派生クラスのフォームデータで埋められます。
QtCreatorでも継承アプローチをサポートしています。それは、それ自体から継承するのではなく、QtDesignerが生成したフォームクラスから継承します。 –
まあ、あなたはそのクラスを継承するかもしれません。それは悪いアプローチです。それは名前のあいまいさや他の厄介なものを引き起こすでしょう。決して固定されていません - 良い方法はありません – Raiv
あいまいさはどれですか?私はそれが一般的に継承よりも壊れやすい方法を見ません。 http://doc.qt.nokia.com/latest/designer-using-a-ui-file.htmlも参照してください。 (btw、個人的に私はポインタからフォームへのアプローチを好む、私はあなたの主張に疑問を呈していた) –
- 1. QWidgetから継承するQtプラグインを作成する方法
- 2. QObjectからのQT pimpl継承
- 3. Qt XML継承
- 4. 抽象クラス、継承、図形でprogrammを実行する最善の方法
- 5. DbContextクラスから継承する方法
- 6. 継承なしでBitmapImageの機能を実装する最善の方法は何ですか?
- 7. Visual Studioでフォーム間の変数を継承する方法
- 8. 基本フォームから継承されたフォームのコンポーネントへのアクセス
- 9. 継続的にロギングする最善の方法
- 10. QObjectから継承した後のQt "signal undefined reference error"
- 11. TObjectListから継承する方法TObjectListから継承する代わりに<T>
- 12. ロバストなフォーム認証:これが最善の方法ですか?
- 13. usercontrolsとフォームを一意のベースコントロールから継承させる
- 14. テンプレートクラスから継承する
- 15. マネージクラスから継承する
- 16. WPF:HeaderedContentControlから継承する
- 17. シングルトンテンプレートから継承する
- 18. Qt:継承されたスーパークラスからのinvokemethodからの不正な戻り値
- 19. 最善の方法
- 20. 最善の方法
- 21. ActiveRecordオブジェクトからの継承
- 22. Mavenの:アグリゲータから継承
- 23. ネイティブオブジェクトからの継承
- 24. テンプレートクラスのインスタンスから継承
- 25. テンプレートからの継承C++
- 26. ListViewItemCollectionから継承
- 27. asp:validationsummaryから継承
- 28. SPManagedObjectから継承
- 29. テンプレートクラスから継承
- 30. Forms.Timerから継承
あなたはあなたの質問 – SMK
を 'private'クラスの継承IMOで詳しく記述できますか? –