私は Qt にかなり慣れていないので、シグナルとスロットに頭を悩ませようとしています。カスタム スロットを作成する方法はわかりましたが、C++ コードから GUI を更新する方法はまだわかりません。デザイナーで作成した UI 全体が、XML ベースの UI コードのように見えるものだけで書かれていることに気付きました。インターフェイスを更新するには、独自の Qt C++ UI を手書きする必要がありますか? それとも C++ を使用して XML ベースの UI を更新できますか? ボタンのクリックでウィジェットをメインフォームに追加しようとしています。どんな助けでも大歓迎です。ありがとう!
3 に答える
ウィジェットをフォームに追加するには、簡単に行うことができます
ui->layout()->addWidget(new Widget);
QtDesigner では XML を GUI の作成、更新、永続化の手段として使用し、開発への視覚的なアプローチを可能にしますが、最終的には XML なしでアプリケーションを完全に構築できます。
その xml は Qt デザイナーによって使用され、デザイナーの外部では、 C++ コードを生成するためのソースとしてuicによってのみ使用されるため、デザイナーで行うすべてのことは最終的に C++ コードになるため、更新 (または完全に実行) できます。 C++ コード (コードを調べると、ほとんどの場合ポインターであるuiというメンバーがあることがわかりますが、それは uic によって生成された C++ クラスのインスタンスである可能性もあり、その ui を介してデザイナで作成したウィジェットとレイアウトにアクセスできます)。
ここで読むことをお勧めする一般的なリソースを見つけてから、(それでもわからない場合は)達成しようとしていることについて具体的な質問をしてください。
LE: そのリンクには、生成されたコードを C++ コードに使用するための 3 つのメソッドが含まれています。それらすべてを作業中のプロジェクトで試してはいけません。1 つのメソッドを選択するか、デフォルトのメソッド (ui メンバー ポインター) を使用できます。
UI の xml を更新する必要はありません。setupUi http://crpppc19.epfl.ch/doc/qt4-doc-html/html/qwidget.html#setupUiを使用して、UI を独自のクラスに継承できます。
C++ クラスでは、ラベル テキストの変更、lineEdit テキスト、シグナルとスロットを使用したスピンボックス値の設定など、ウィジェットを更新できます。