web-dev-qa-db-ja.com

GTK +とQtのどちらを選ぶべきですか?

誰かが今日それらのライブラリに最適な用途を提案できますか?それは単なるGUIですか、それともデータベース、XML、ネットワーク、スレッドなどのサポートもありますか?

私はそれらについて読んでいて、そのうちの1つを学習/使用し始めることを検討していました。

最も一般的なものは何ですか?それらの違いは何ですか?なぜあなたは一方をもう一方よりも選ぶのですか?

83
Idan

主にLinuxをターゲットにしているように見えるため、選択は主に使用するプログラミング言語に依存します。

Cでコーディングする場合は、明らかにGTK +を使用してください。

C++でコーディングする場合はQtを使用してください。そうでない場合は、 Gtkmm (GTK +のC++ラッパー)が必要になります。

Pythonでコーディングする場合、GTK +とQtの両方に言語のバインディングがあります: PyGtkPyQt および PySide (Nokia自身が起動したものを参照) )。

Javaでコーディングする場合、Qtは NokiaはQt Jambiを廃止 (Javaバインディング)のように、実行可能なオプションではありません。

また、Qtは、シーングラフ QGraphicsScene API、Javascript Core(WebKitを駆動するエンジン)で構築されたスクリプトエンジン、ステートマシンとアニメーションフレームワーク、および 宣言型UI

GTK +は、 Clutter と一緒に使用できますが、それほど多くは提供しません。

DB、XML(GTK +にはXMLのサブセットのパーサーがあります)、およびスレッド化(GTK +には GLib )機能がある場合、Qtはすべてを QtSql で提供します=、 QtXml および QtConcurrent

全体として、Qtは確実な選択肢だと思います。しかし、GTK +も同様に非常に優れています。

あなたがあなたの質問に対して非常に明確な答えを得るかどうかはわかりません。それはなぜ一部の人々がKDEよりもGnomeを好むのか、またはその逆を好むのかを説明しています。 あなたに最適なものを選択してください。

PS:Symbianもターゲットにしたいのですが、Qtに行きます。

編集:Qtでも優れているのはQtWebViewです。ChromiumをQtアプリケーションに取り込み、Webコンテンツを表示します。他には、たとえばAwesomiumまたはBerkeliumを使用して、Webコンテンツをアプリケーションに埋め込みます。

89
Gregory Pakosz

GTK +、QT、wxWidgetsを使用したことがあります。以下に簡単な要約を示します。

私の最初のクロスプラットフォームUIプロジェクトでは、主に当時のライセンスがQT(QTはGPLでLinuxのみ)ほど制限がなく、プラットフォーム固有のUI(GTKとは異なります)があったため、主にwxWidgetsを使用することにしました。プロジェクトはうまく機能しましたが、他のプラットフォームで適切にコンパイルして実行できるようにするための不具合がかなりありました-時々、いくつかのイベントが異なるように起動されました。また、wxWidgetsのGDIはかなり遅かった。

次に、Pythonの別のプロジェクトにGTKを使用しました。このためにpythonバインディングを使用し、すべてが多少スムーズに機能しました。UIがWindowsおよびMacでネイティブに見えず、起動時にも事実が気に入らなかった常にデバッグするGTK +アプリは、無視しても問題ないと思われるCRITICAL警告の負荷を出力します。

最後に、Nokiaが非常にシンプルなQTプロジェクトを取得し、素晴らしい成果を上げました。 3つのベスト。まず第一に、あなたがVIやEmacsを好む年寄りでないなら、QtCreatorは素晴らしいです。私はVIが大好きで何年も使用していますが、C++ QTプロジェクトにはQtCreatorが非常に好きです。ライブラリに関しては、提供されているドキュメントとAPIもとても気に入りました。 QTには、新しいC++キーワードとプリプロセッサを導入するスロットとシグナルの概念があります。基本的に、チュートリアルを読んだ後、あなたはそれを簡単に手に入れ、それを愛し始めるでしょう。私は今iPhone開発をしていますが、Cocoa/Interface BuilderのUIパラダイムに少し似ています。

要約:私はQTの伝承に行きます。ライセンスはかなり良く、SDKとドキュメントは本当に素晴らしいです。

40
rui

GTKを使用したことはありませんが、Qtを使用した私の個人的な経験から:

シンプルなGUIだけではありません。これは、アプリケーションフレームワーク全体です。以前は、C++のJavaライブラリと考えていました。データベース、XML、ネットワーク、スレッドなど、すべての情報を提供します。コンテナやイテレータ、および多くのブーストライブラリの対応物。

Qtの使用を開始したときに最も感銘を受けたのは、非常に広範なドキュメントです。 Qt Assistantと呼ばれるプログラムを入手します。このプログラムは、デスクトップ上で完全にインデックス付けされた検索可能なAPIドキュメント、および多数のコード例とチュートリアルを提供します。 API情報を検索するたびにWebを検索することで大きな違いが生じることがわかりました。メソッドのシグネチャを覚える必要がある場合に非常にすばやくアクセスできます。

どちらが最も一般的かはわかりません。おそらく正確に測定するのは難しいでしょう。どちらも確かに人気があります。 GnomeはUbuntuのデフォルトのデスクトップであり、GnomeはGTKの上にあるため、明らかに広く使用されています。もちろん、KDEも非常に人気があります。 Nokiaはモバイル分野でQtを大幅に推進しています。たとえば、新しいN900で使用されているMaemo OSは、すぐにデフォルトのツールキットとしてQtに切り替わります(現在はGTKです)。QtもすぐにデフォルトのツールキットになるSymbian OSの場合。

Qt Creatorを使用したことはありませんが、Qt Creatorについて多くの良いことを聞いています。これはC++です。IDE Qtとの明白な重度の統合を備えています。また、そのようなことが好きな場合は常に素敵な偽のvimエミュレーションもあります!

Qtは、ビルド構成にqmakeを使用します。これは、独自のメイクファイルを作成するよりもはるかに優れていることがわかりました。 GTKが構築に使用するものがわかりません。

私が最初にQtを少し不快に感じたのは、プリプロセッサマクロの大きな用途でした。シグナル/スロットシステムは、アプリケーションでイベント/メッセージを渡すための素晴らしいメカニズムを提供しますが、別のツールキットに簡単に移植できないような魔法のように感じます。また、moc(メタオブジェクトコンパイラ)は、それが何をするのか完全にはわかりませんが、舞台裏で魔法が行われているようにも感じます。

全体として、Qtをお勧めします(特に学習している場合)。本当に素晴らしいドキュメントと素晴らしいIDE、そして忙しいフォーラムがあります。特に4.7に含まれるQMLを使用すると、C++アプリを非常に迅速に構築できます。

23
ngm

おそらくあなたが何をしたいかに依存します。 Qtをお勧めします。GUIよりも優れており、ニースPythonバインディング(Gtkも同様)があり、GUIライブラリ自体は(主観的に)Gtkよりも快適です)。

一方、GtkはLinuxの世界でより一般的であるため、おそらくWebでより多くの助けを得ることができます。 Gtkが広く普及した理由は、技術的なメリットではなく、GnomeとUbuntuに関係していると思われますが、ソフトウェアをこれら2つとうまく調和させたい場合は、Gtkで簡単に実現できます。

9
Slartibartfast

確かにQtには確かなDB、ネットワーク、スレッドサポートなどがあります。クロスプラットフォームGUIだけでなく、それ以上のことをします(そしてそのほとんどを非常にうまく行います)。

GTK +よりもお勧めします。

7
ChristopheD

Qt。オブジェクト指向だけでなく、「良い」オブジェクト指向です。これは、C++のあいまいさに依存しないC++の「サブセット」に基づいています(ただし、マゾを空想した場合は、それらに固執することができます;))。

ノキアがそれを購入した今、勢いがあります(実際、ノキアは2/3年前に購入しました)。 NokiaおよびIntelのすべてのモバイルデバイス(スマートフォン、ネットブック、タブレット)に搭載される予定です。

これはKDEのバックボーンであるため、非常に成熟していますが、非常に柔軟な方法で設計されているため、今日more-then-just-GUIであるすべての最新の「クールなもの」をサポートできます。フレームワークが必要です。

頑張れ。

3
Detro

QTの利点を他の回答に追加するだけです。QTには優れたドキュメントがあり、独自の IDE&GUI creator .

私はGTK開発者ではないので、それらをGTKの世界と比較することはできません:(

3
Gregor Petrin

IOS、Android、Blackberry、その他のモバイルプラットフォーム、Windows、Mac OSX、Linuxでアプリを実行する場合は、Qtを使用します。

qt-project.org

1
trusktr

また、NokiaはMaemoのように、どこでもQtを使用しようとしているようです。

1
jlru