質問

現在、かなり適切に設計された一連の MFC アプリケーションを維持していますが、ユーザー インターフェイスがくたびれ始めているように見え、重複やパフォーマンスの問題を解決するために多くのコードでかなりのリファクタリングが必要です。私たちは、独自の描画をすべて処理する (すべて MFC を使用して記述された) カスタム コントロールを多数使用しています。

最近、私は Qt とそれが提供する利点 (クロスプラットフォームであり、UI 開発のためのより「プロフェッショナル」と言えるフレームワークをサポートしています) についてさらに研究しています。

私の質問は - おそらく Qt フレームワークに移行するための最良のアプローチは何でしょうか?Qt は MFC とうまく連携しますか?カスタム コントロールの一部を Qt に移植し始めて、既存の MFC アプリに徐々に統合していく方がよいでしょうか?(それは可能ですか?)。

アドバイスや以前の経験をいただければ幸いです。

役に立ちましたか?

解決

私の会社では現在 Qt を使用しており、非常に満足しています。

私個人としては、MFC アプリを Qt フレームワークを使用するように移行する必要はありませんでしたが、興味深いかもしれないものを以下に示します。

Qt/MFC 移行フレームワーク

Qt/MFC 移行フレームワーク

これは Qt-Solutions の一部であるため、Qt-Solutions ライセンスと一緒に Qt ライセンスを購入する必要があることを意味します。(編集: もうない)

これがお役に立てば幸いです!

他のヒント

(これはあなたの具体的な質問に実際には答えませんが...)私は個人的にQTを使用していませんが、商業的なウィンドウ開発は無料ではありません。

見ましたか wxWindows どれが無料ですか?素敵な記事 ここ. 。余談ですが、すべてのプラットフォームで単一のコード ベースが必要な場合は、MFC から移行する必要があるかもしれません。MFC は Windows のみを対象としていると確信しています (間違っていれば誰かが修正します)。

もう 1 つのオプションは、 機能パックのアップデート VS2008 SP1 の MFC - これには、Office スタイルのリボン コントロールなどの新しいコントロールへのアクセスが含まれます。

これは難しい問題であり、答えはどれだけの時間があるかによって決まると思います。カスタム コントロールを Qt に移植すると、より良い結果が得られます。実際の描画に QStyle クラスを使用すると、すぐにテーマを適用できるコードが完成します。

一般的に、私のアドバイスは、思い切って一度に最後まで進むことです。確かに、もっと時間がかかるかもしれませんが、代わりに、問題のないコードのデバッグに時間を費やすことになります。 とても 結局、2 つのシステム間の軽微な非互換性に対処するためにさらにコードを書くことになります (そこにいたから、それは完了しました)。

要約すると、私のアドバイスは、ブランチを開始して古い MFC コードをすべて削除し、Qt に置き換えることです。プラットフォームに依存しない機能を (ほぼ) 無料で手に入れることができ、少し時間はかかりますが、最終的にはより優れた製品が完成するでしょう。

最後に警告の言葉をひとつ。「Qt のやり方」を理解するために必ず時間をかけてください。場合によっては、MFC のアプローチとはまったく異なる場合があります。MFC スタイルの Qt コードで終わることは絶対に避けてください。

私は以前にこの種のことを行うチームを率いたことがあります (MFC から QT までではありませんが、原則は機能するはずです)。

まず、ダイアログとその入力、コントロール、出力が何であるかを文書化しました。また、特に GUI 内の巧妙なロジックに対していくつかのテスト ケースを作成します。

場合によっては、GUI にクリーンなインターフェイスを提供するためにビジネス ロジックをリファクタリングする必要がありましたが、これはそもそもそうすべきだった方法です。

これで、GUI、入力、出力、テスト、およびカプセル化された GUI が一致する必要があるインターフェイスのリストができました。

私たちはプロジェクトごとに、古いものと同等の GUI を作成し始めました。それが完了したら、古い GUI があった場所に GUI を挿入し、再構築してテストできます。最初は何度もつまずきましたが、すぐによくあるエラーを見つけて修正しました。十数人のチームで作業していましたが、私たちは 612 のダイアログをナビゲートしました (おそらく)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top