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


8

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

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

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


回答:


6

Qt:とても簡単です。

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

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

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

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

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

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

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

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

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


標準ライブラリの複製は頻繁に行われます-wxWidgetsを含めますが、IIRCでは標準ライブラリの使用に切り替えるオプションがあります。Microsoftは、おそらく2003年バージョンのVisual Studioまで、この問題について真剣に考えていませんでした。
Steve314、2011

VS2008までは完全に正しかったとは思わないでください!私がwxを使用してから数年になりますが、Qtでは、コレクションクラスはstlで完全に切り替え可能になりました。どちらも独自の文字列クラスを使用していますが、std :: stringがどれほど貧弱であるかを考えると、それを許すことができます!
マーティンベケット、

今でも完全に正しいとは思えない-完璧を求めるのは少し難しい。VC ++ 2003は私には大体問題ないように見えましたが、いくつかの厄介な問題もありました。多分それは(Visual C ++ 6より良いものは何でも)パースペクティブなものです。
Steve314、2011

@ Steve314-vc2008とvc2010で大幅に改善されました。stutter msftのC ++チームを雇うことにより、「私たちにとってはうまくいく」「言語に機能を追加してこのアプリを修正する」から、最高のC ++コンパイラを目指しているようです。
Martin Beckett

4

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

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

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

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

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

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

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

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

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


+1「仕事を終わらせる」。特定のプロジェクトに最適なGUIライブラリを一生かけて調査し、最終的には、最も人気のあるいくつかのかなり浅い試験から選択するよりも、(もしあれば)ほんの少しだけ良いものを選択することになります。個人的には、使用しているGUIを制御できる限り、他に何も調べなくて済む十分なwxWidgetsを知っています-QTまたはGTKは、Windowsでの使用がそれほど大きくないと想定して、おそらく同じように扱うことができます。対処。どちらかといえば、軽量のFLTKライブラリに興味があります。
Steve314、2011

2

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

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

どこでも似たルックアンドフィール

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

そのようなライブラリの例は、TkとGTK +です。

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

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

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


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


wxWidgetsまたはQtでルックアンドフィールを一度に設定することはできませんか?
BenjaminB

私の記憶は、wxWidgetsがプラットフォームのネイティブUIシステムのラッパーであるため、私はそうは思いません。Qtについてはわかりません。以前はネイティブウィジェットのルックアンドフィールをエミュレートしていたため、別のプラットフォームのエミュレーションに切り替えることができました。しかし、私は彼らが今何をしているのかわかりません。とにかく、私の経験はほとんどが非技術的な顧客による商用利用のための開発に関するもので、ネイティブでないルックアンドフィールは悪いことです。たとえば、Tkベースのgit guiを起動すると、使用しているプラ​​ットフォームに関係なく、見た目が悪いため、少し耳障りなことがわかります。
ボブマーフィー

wxとqtはどちらもネイティブウィジェットを使用するか、存在しない場合はネイティブに見えるウィジェットを描画します。どちらもテーマをサポートしているため、ネイティブに見えます。
Martin Beckett

2

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

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


ライセンスが変更されました。Qtのソースを変更しない限り、商用のクローズドソースアプリケーションでも無料で使用できます。
ラファエル

1

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

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


私は自分以外には何の責任もありません。だからそれは私の個人的なプロジェクトと私の履歴書のためだけです!
BenjaminB
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.