3

最初は、QTを学び始めたばかりなので、これについての知識はそれほど深くありません。もちろん、コンソールアプリケーションである簡単なタスク管理を作成しました。MVCパターン(コントローラー、ビュー、アクション、モデル)に似たロジックを使用しました。

たとえば、ユーザーログインを見てみましょう。LoginControllerクラスのインスタンスを作成してから、LoginControllerは、ユーザーがデータ(ログイン、パスワード)を入力するのを待っているLoginViewのインスタンスを作成します。ログインとパスワードはLoginViewメンバーとして保存されます。次に、LoginControllerでこのデータを読み取り、パラメーターとしてUserVerificationActionコンストラクターに渡します。このクラスのコンストラクターは、このデータをクラスのメンバーとして保存しました。次にLoginControllerで、ログインとパスワードを検証するクラスUserVerificationのメソッド--action()を呼び出します。次に、検証の結果に応じて、MenuControllerのインスタンスまたはLoginFailiedViewのインスタンスを作成します。このメカニズムは、プログラム(CreateUserController、AddTaskController)など全体でユーザーです。仮想メソッドを使用したため、MenuControllerは約20行のコードで構成され、非常に読みやすくなっています。

Qtを使用してGUIをより正確に実装したい信号とスロットのメカニズムを使用したいのですが、ジレンマがあります。LoginViewクラスにスロットを作成してからアクションインスタンスを作成し、代わりに入力したデータをLoginViewメンバーに渡してから、LoginControllerでインスタンスとアクションクラスを作成する方がよいでしょう。多分これを行うためのより良い方法があります。私がそれを適切に行う方法についていくつかのヒントを教えてほしい

ps英語でごめんなさい

4

2 に答える 2

1

Qtでは、「コントローラー」の概念が少し曖昧になっています。モデルとビューの両方の一部になる傾向があります。これは、モデルとビューロジックをリンクするコントローラーを作成できないことを意味するものではありません。

通常、表示されるのは、そのアクションの信号を発するビューです。次に、これらをモデルの互換性のあるスロットまたは独自のスロットを作成したサブクラスに直接配線します。

たとえば、メインウィンドウがある場合。このウィンドウは、子としてモデルとビューを作成する場合があります。次に、モデルとビューの間を結ぶウィンドウサブクラスのスロットを定義できます。これは、ウィンドウがビューであり、コントローラーであることを意味します。

于 2012-12-30T19:12:41.193 に答える