あなたの問題は典型的な XY 問題です。間違った問題に対する答えを探しているのです。
はい、いくつかの基本的なメソッドを追加できるようにしたいですUi_MainWindow
いいえ、あなたはしません。あなたがしたと思ったことは忘れてください。主張する場合は、質問を編集して、何をしようとしているのかを正確に示す必要があります。追加しようとしているメソッドと、それらは何を行い、何のために行うのですか? あなたのアプローチが最初に理にかなっている可能性が高いことを私たちに納得させるのはあなたの責任です.
このUi_MainWindow
クラスは、変更されることを意図したものではありません。Qt Designer
おそらく、コード エディターとして使用しようとしていますか? そうではありません。この.ui
ファイルは、コードを保持するためのものではありません。したがって、それから生成された出力は、あなたが書いたコードを運ぶことを意図したものではなく、GUI の設計を実装するコードのみです。
メソッドを追加する場合は、Ui::
クラスを使用するウィジェットに直接追加する必要があります。結局のところ、これは一連のポインターを保持するために使用される値クラスです。ウィジェット内に値で保存し、メソッドをウィジェット クラス自体に追加する必要があります。ウィジェット クラスをクラスから派生させることもできますUi::
。
class MyWidget : public QWidget, protected Ui::MyWidget {
...
};
これにより、メソッド自体MyWidget
に追加したメソッドと同じくらい優れたメソッドが作成されUi::MyWidget
ます。
で生成されたクラスを変更したいというインスタンスに1 回だけ遭遇したことがあり、それはメソッドをそれに追加することでした。これは便宜上、既存のコードの修正を最小限に留めるために行われました。そのためには、派生クラスにメソッドを追加します。uic
template <typename T> MyUi : public T {
void myMethod();
};
class MyWidget : public QWidget {
MyUi<Ui::MyWidget> ui;
...
MyWidget(QWidget *parent = nullptr) : QWidget(parent) {
ui.setupUi(this);
ui.myMethod();
}
};