1. ホーム
  2. c++

[解決済み] ハンドコーディングGUIとQtデザイナーのGUIの比較 [終了しました。]

2022-05-18 09:38:51

質問

この連休を利用して、Qtアプリケーションの書き方を勉強しています。数時間前にQt Designerについて読んでいて、「Qtで実際のアプリケーションを書いている人たちは、GUIをデザインするのに何を使っているのだろう? 実際、人々は一般的にどのようにGUIをデザインしているのでしょうか?

私自身は、Qt Designer を使用するより、コードを手で書くほうが概念的にシンプルだと感じました。大規模な GUI は Designer を使用して可能かもしれませんが、時間とともに複雑さが増し、管理が非常に困難になるかもしれません (これはあくまでも私の意見です)。また、AmaroK のソースコードをダウンロードして、彼らが何をしているかを覗いてみましたが、addWidget() などの呼び出しはたくさんありましたが、Designer で作成した XML ファイルはありませんでした (余談ですが、AmaroK はあらゆるプラットフォームで私のお気に入りのアプリケーションになっています)。

では、GUI を作成するための正しい方法は何でしょうか? デザイナーかコードか? この議論では、次のようなタイプの GUI を考えてみましょう。

  1. 入力を受け取り、何らかの結果を表示して終了するだけのシンプルなダイアログ。YouTube の URL を受け取り、ユーザーのハード ディスクにビデオをダウンロードするアプリケーションを想定してみましょう。初心者はこのようなアプリケーションから始めることが多いでしょう。
  2. 中級レベルの GUI。たとえば、いくつかのツールバー/メニュー項目を持つ付箋紙エディターのようなものです。xPad を例にとってみましょう ( http://getxpad.com/ ). ほとんどのアプリケーションはユーティリティのカテゴリに属すると思います。
  3. AmaroK や OpenOffice のような、非常に複雑な GUI。目を血走らせるようなものなので、見ればわかります。

どのように解決するのですか?

私たちのDesignerの経験は、Qt3から始まりました。

Qt3

その時点では、Designer は主にアプリケーションにコンパイルするコードを生成するのに便利でした。その目的で使用し始めましたが、すべての生成されたコードでは、一度編集すると、編集を失うことなく戻って再生成することができなくなります。結局、生成されたコードを使用して、以後はすべて手作業で行っています。

Qt4

Qt4ではDesignerが大幅に改良されました。もはやコードを生成するだけでなく、Designer のファイル (xml) を動的にロードして を実行中のオブジェクトに動的に接続することができます。 -- しかし、Designer でアイテムに名前を付け、コードを壊さないようにその名前に固執する必要があります。

私の評価では、Mac OS X の Interface Builder ほど便利ではありませんが、現時点では、プログラムの中で直接 Designer ファイルを使用することができます。

Qt3 以降は Designer に戻っていませんが、プロトタイプやレイアウトのデバッグのためにまだ使用しています。

あなたの問題のために。

  1. Qt が提供する標準的なダイアログを使用することで、おそらく回避することができます。 QInputDialog を使うか、QDialogのサブクラスを作るなら、必ず QButtonDialogBox を使用して、ボタンが適切なプラットフォームレイアウトであることを確認してください。

  2. xPad のような限定された Designer 機能で、より限定的なことができるかもしれません。

  3. Designer だけで OpenOffice のようなものを書けるとは思いませんが、たぶんそれは問題ではないでしょう。

私は Designer をテキストエディタのような別のツールとして使用します。制限を見つけたら、その新しい問題に対して別のツールを試してみてください。Designer の利点の 1 つは、プログラマーではない他の人がレイアウトを行うことができるという点で、Steve S に完全に同意します。