25

Qtを使用してC++アプリケーションを作成したいのですが、最初にPythonを使用してプロトタイプを作成し、次にPythonコードを徐々にC++に置き換えます。

これは正しいアプローチですか?どのツール(バインディング、バインディングジェネレーター、IDE)を使用する必要がありますか?
理想的には、すべてがUbuntuリポジトリで利用可能である必要があります。そうすれば、互換性のないバージョンや古いバージョンについて心配する必要がなくなり、すべてを単純なで設定できaptitude installます。
このプロセスに関する包括的なドキュメントはありますか、それともすべてのコンポーネントを学習する必要がありますか?はいの場合、どのコンポーネントを学習する必要がありますか?

現在、私には複数の選択肢があります。オートコンプリートとQt統合が優れているため、QtCreatorです。
Eclipseは、C++とPythonの両方をサポートしているためです。Eric(まだ使用していません)Vim

PySideはCMakeとBoost.Pythonで動作するため、理論的にはPythonコードの置き換えが容易になります。PyQtはより広く使用されており(より多くのサポート)、Debianパッケージとして利用可能です。

編集:プログラムをさまざまなコンピューターにデプロイする必要があるため、C ++ソリューションでは1〜5個のファイル(静的にリンクしている場合はプログラムといくつかのライブラリファイル)が必要になり、Pythonを使用してPyQt/をビルドする必要がありますすべてのプラットフォームでPySide/SIP /何でも、Pythonやその他すべてをインストールする方法を説明します。

4

3 に答える 3

36

Qtを使用してC++アプリケーションを作成したいのですが、最初にPythonを使用してプロトタイプを作成し、次にPythonコードを徐々にC++に置き換えます。これは正しいアプローチですか?

それはあなたの目標に依存します。両方を行った後、可能な限り合理的にPythonを使用することをお勧めします。少し規律が必要ですが、Pythonで非常に大きなアプリケーションを作成することは非常に可能です。ただし、C ++でより適切に処理できるホットスポットやものを見つけたら、関連する部分をC++に確実に移植できます。

このプロセスに関する包括的なドキュメントはありますか、それともすべてのコンポーネントを学習する必要がありますか?はいの場合、どのコンポーネントを学習する必要がありますか?

さまざまな作品におすすめするものは次のとおりです。

エディター/IDE:使い慣れたエディター/ IDEを使用しますが、リファクタリングをサポートするエディター/IDEを強くお勧めします。Eclipseに慣れている場合は、それを使用してください。主にC++ルートを使用したいが、エディターにあまり精通していない場合は、QtCreatorを使用したほうがよい場合があります。 Ericは、リファクタリングをサポートする非常に優れたPython IDEです。ただし、多くのC ++を実行する予定がない場合は、それを確認してください。さらに良いことに、そのソースコードはPyQtの優れた使用法と実践の例です。

プロセス

簡単な要約:

  1. PyQtを使用してPythonでアプリケーションを作成する
  2. ホットスポットとして識別されたら、分離されたPythonクラスをC++に変換します
  3. SIPを使用してこれらのクラスのバインディングを作成する
  4. 新しく定義されたライブラリを、対応するPythonの代わりにPythonにインポートします
  5. スピードブーストをお楽しみください

一般的な詳細:

PyQtを使用してPythonでアプリケーションを作成します。関心の分離を適切に保つように注意してください。そうすることで、C ++にピースを移植する必要があるときに、それらが依存関係から分離されます。最終的に何かをC++に移植する必要がある場合は、それをC ++ / Qtで記述し、SIPを使用してそのバインディングを作成します。SIPにはプロセスに関する優れたリファレンスマニュアルがあり、例としてすべてのPyQtがあります。

展開

C ++ -多くのアプリケーションでは、依存関係は十分に単純なので、 NullSoftのInstallerInnoSetupなどのツールを使用してインストーラーを作成することはそれほど難しくありません。

Python / PyQt -PyQtアプリケーションは、Pythonに依存し、Qtライブラリの存在に依存しているため、インストールが少し難しくなります。ある人は、ARSTechnicaでこの投稿に対する彼の努力を記録しました。 py2exeはWindowsで非常にうまく機能し、正常に機能するはずです。Pythonソースに付属しているIME、freeze.pyは、どの共有ライブラリが本当に必要かを判断する際に問題が発生する場合があり、依存関係が存在しないバイナリを作成してしまう場合があります。Py2appはMacOSXで動作するように作成できます

しかし、さらに悪いのは、PyQt/Qtライセンスです。商用アプリケーションを開発している場合は、商用PyQt(およびQt)ライセンスが必要です。ライセンスの制限により、ユーザーがソースを簡単に変更したり、PyQt /QtAPIに対してコードを記述したりできないようにする必要があります。そのため、PyQtの作成者はVendorIdというツールを作成しました(ただし、Pythonライセンスがあります)。VendorId内には、Pythonインタープリターのみに依存する実行可能ファイルを作成するために使用できるSIBと呼ばれるツールがあります。ただし、ここまで進む場合は、アプリケーションと一緒にカスタムPythonをインストールすることをお勧めします。

免責事項:私はPySideをまったく使用していないので、PyQtと比較してどうなるかわかりません。また、彼らのWebサイトで次の警告に注意してください。

PySideは進行中の作業であり、本番レベルの安定性を必要とするアプリケーション開発にはまだ適していません。

しかし、良いことに、彼らは少なくとも最初のリリースでは「PyQtとのAPI互換性を維持する」ことを意図しています。したがって、C ++バインディングを除いて、後で2つを簡単に切り替えることができます。

于 2010-04-22T19:26:41.650 に答える
3

Qt を学習していて、Python が提供するプロトタイピングの速度を利用したい場合は、PyQt. あなたが言ったように、debian パッケージがあるのでapt-get、最初のアプリケーションを作成するのは簡単です。

私は個人的gVimに Python/Qt エディターとして使用していますが、Python に適したエディターであれば問題なく使用できます。私は好きWingIDEで、Qtのオートコンプリートがありますが、vim kool-aidを一口飲んだら、切り替えるのは難しいです.

PySide95% 以上の互換性がPyQtあり、LPGLライセンスも優れていると言えますが、最初の Qt アプリのプロトタイプを作成しようとしているだけであれば、.NET を使用する本当の理由はないと思いますPySide。私はPySideドキュメントの方が好きですが、それらをそのまま使用して、すべてのライブラリ参照を に置き換えることもできますPyQt

SIP構築しているアプリケーションの複雑さによっては、ブラック マジックで大量のリファクタリングを試みるよりも、C++ バージョンでゼロから始める方がよい場合があります。Qt フレームワークをしっかりと理解したら、C++ バインディングと Python バインディングを簡単に切り替えることができるはずです。

于 2010-04-22T20:09:59.393 に答える
1

プロトタイプのコーディングを始める前に、UI モックアップを描きます。以下にいくつかの利点を示します。

  • プログラミングが含まれていないため、プロトタイプをコーディングするよりも高速です

  • テーブルやツリーなどのウィジェットにデータをすばやく入力する

  • 画面に説明とメモを追加する

  • 画面をキャプチャしなくても、モックアップを仕様書に簡単に統合できます

  • 実装前に UI デザインのコンセプトを検証する

これを行うのに役立つツールはたくさんありますが、Qt を使用する場合は、Windows 7、8、または 10 のネイティブ スタイルで Qt ウィジェットをレンダリングし、モックアップをより現実的に見せるため、 MockupUIを選択することをお勧めします。 .

于 2016-08-07T16:58:46.697 に答える