web-dev-qa-db-ja.com

クロスプラットフォームのC ++ GUIライブラリを選択する場合、何を探す必要がありますか?

学習C++プログラマーとして、自分のプロジェクト用のGUIフレームワークまたはライブラリーを選択しようとしています。

私はQtについてある程度の経験があります。非常に簡単で、非常に優れたドキュメントがあり、多くのツールを提供していますが、標準ライブラリの多くを複製しているようです。

すべてのC++ GUIライブラリはこのようなものですか? GUIライブラリでは何を探す必要がありますか?特定の問題が与えられた場合にどの方法が最適かをどのように判断しますか特定の1つのライブラリに焦点を当てるべきですか、それともそれらが異なる目的に役立つ可能性があるので、それらのいくつかを知っておく価値はありますか?

8
BenjaminB

Qt:とても簡単です。

一般的にGUIライブラリに当てはまるものではありませんが、Qtのシグナル/スロットメカニズムはかなり良いソリューションです

非常に優れたドキュメントがあり、

QtとWXはどちらも、リファレンスとチュートリアルの両方で非常に優れたドキュメントを提供します

そして多くのツールを提供し、

Qtはツールを必要とし、他のライブラリは通常のコンパイラ以外に何も必要としません-特にサイザータイプのレイアウトを使用するものはguiエディターさえ必要としません。

しかし、標準ライブラリの多くを複製しているようです。

ほんの数年前にstd libとすべてのプラットフォームでSTLが存在または機能していることに依存できなくなったため、これは単純に一般的です。今日でも、これはモバイルプラットフォームでは常に当てはまります。多くの場合、それらのコレクションクラスを使用する必要がないか、それらがstlのものとプラグ互換であることがわかります

特定の問題を考慮した場合、どれが最適かをどのように判断しますか?」

一般に、標準のデスクトップビッグアプリタイプの問題または高度に設定可能なモバイル/ウェブインターフェースを実行するには、gui libが必要です。多くの場合、gui libはQtやQWTなどの両方のフレーバーを持っています

6
Martin Beckett

すべてのC++ GUIライブラリはこのようなものですか?

すべてを1つの記述子にまとめようとしないでください。ライブラリは常に不十分であるか、文書化されていません。それらは、90%の時間でホイールを再発明するか、いくつかの新しい画期的な機能を提供する可能性があります。

GUIライブラリでは何を探す必要がありますか?

可能な限り最も効率的な方法でニーズを解決するライブラリを探す必要があります。効率的とは、コード単位とパフォーマンスの組み合わせを意味します。明らかに、ライブラリが難読化されたPerlを連想させるように見える場合、たとえそれが非常に高速な実行を提供する場合でも、プロダクションコードにそれを使用したくないでしょう。逆に、極端に冗長なものは欲しくないが、実行速度が妨げられている。

特定の問題が与えられた場合にどの方法が最適かをどのように判断しますか?

何が最善であるかを決定するための決定的な方法が常にあるとは限りません[〜#〜] x [〜#〜]行うこと[〜#〜] y [〜#〜]。あなたの問題とライブラリによって提供されるソリューションに関してある種の偏りのないデータを見つけることができるなら、それは一方向です。知識と経験も、ソリューションがニーズにどのように適合するかを判断するための最良の方法の1つです。

特定の1つのライブラリに焦点を当てるべきですか、それともそれらが異なる目的に役立つ可能性があるので、それらのいくつかを知っておく価値はありますか?

それはあなたが何をするか、そしてあなたのニーズが何であるかにのみ依存しています。 [〜#〜] x [〜#〜]で作業する必要がある場合は、それに最適なライブラリを学習する必要があります。 1つのことだけに取り組んでいて、ニーズに合ったライブラリが1つあるなら、なぜわざわざ?

*注意:詳細を知ることは決して悪くありません。純粋に「仕事を成し遂げる」という観点から言っているだけです。

4
user7007

技術的な側面の下で、ライセンスをよく見る必要があります。 Qtは、非営利のオープンソース開発に対してのみ無料です。契約作業のような他の分野でそれを使用し始める場合、あなたとあなたの顧客または会社がそれを使用できること、そして費用がすべての関係者に受け入れられることを確認する必要があります。

編集:ラファエルが言うように、私はQtのライセンスについて間違っています。それでも、誰かがGUIライブラリを合法的に実行できるようにするために、誰かが使用したいGUIライブラリの決定プロセスの重要な部分だと私は思います。

2

特定の問題が与えられた場合にどの方法が最適かをどのように判断しますか?

1989年以来、数十のGUIポートとクロスプラットフォームGUIアプリを実行してきたため、常に決定しなければならない最初の質問はlook-and-feelであることがわかりました。クロスプラットフォームのGUIライブラリは、そのようにスペクトルに沿って実行されます。

どこでも同様のルックアンドフィール

これらは、ソフトウェアがプラットフォームを頻繁に変更する必要があり、ソフトウェアがどこでも同じように動作することを望んでいる人を対象としている場合に最適に機能します。これは、Macラボを訪問するLinuxの人であるか、誰かが助成金の一部として大量のWindows boxenをあなたに与えるような、いくつかの科学的アプリケーションで一般的です。

そのようなライブラリの例としては、TkやGTK +があります。

どこでもプラットフォームネイティブのルックアンドフィール

これらの人々はおなじみのユーザーインターフェイスにはるかに興味があるので、これらは商用アプリケーションや技術者以外のユーザーにとってはるかに優れています。実際、ネイティブのルックアンドフィールを持たないソフトウェアの使用を拒否する可能性があります。

このようなライブラリの例としては、wxWidgets、RealBasic、Cocotron、Qtなどがあります。


その決定を行ったら、問題のドメインをより詳細に検討し始め、どの特定のツールキットが最適であるかを判断できます。

2
Bob Murphy

選択の専門性は別として、もう1つのポイントは、製品の寿命の間、選択されたツールの知識を持つ開発者の可用性です。これは、商用世界のすべての開発ツールを選択する際の主要な推進力になるはずです。それがあなたのためだけの場合は、あなたが望むことをしてください。そうでない場合は、開発者が知っている、知りたい、そしてよく知られているツールに固執してください。 Java/SwingまたはC++/QTアプリの請負業者や従業員を募集する方が、ADA /(ここでは前代未聞のGUIツールキットに入力する)アプリよりもはるかに簡単です。

あなたが選択したツールキットは、あなた自身と他のすべての人のために「キャリアアップ」を選択しますか、それとも履歴書に責任がありますか?

1
mattnz