GTK +またはQtのどちらを選択すればよいですか?[閉まっている]


89

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

私はそれらについて読んでいて、それらの1つを学び/使用し始めることを考えました。

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


20
もともと、GTK +がLGPLであったのに対し、完全GPLまたは商用のQtライセンスモデルについては多くの論争がありました(したがって、後者はクローズドソース製品と組み合わせて使用​​する方が簡単でした)。しかし現在、QtはLGPL IIRCとしても利用可能であるため、どちらかを選択する本当の理由ではなくなりました。
Roalt 2009

3
:また、この大部分は関連する質問に見えるかもしれませんstackoverflow.com/questions/1801074/...
cjhuitt -カレブHuitt

4
そして再び、stackoverflowで良い質問が閉じられました。優れた統合HTMLウィジェットが必要な場合は、今すぐGTKを使用するか(QT 5.2が劇的に/使用できない縮小機能セットに移行した後)、QTを使用してChrome CEFを埋め込む必要があります。これにより、多くのものが追加され、複雑になり、アプリに20MB。
Lothar 2016年

回答:


95

主にLinuxをターゲットにしているように見えるので、選択は主に使用するプログラミング言語によって異なります。

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

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

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

Javaでコーディングする場合、NokiaがQt JambiQtのJavaバインディング)を廃止したため、Qtは実行可能なオプションではなくなりました。

また、Qtは、シーングラフQGraphicsScene API、Javascript Core上に構築されたスクリプトエンジン(WebKitを強化するエンジン)、ステートマシンとアニメーションフレームワーク、および宣言型UIに関してより一流です。

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

特にDB、XML(GTK +にはXMLのサブセット用のパーサーがあります)およびスレッド化(GTK +にはGLibがあります)機能を調べている場合、QtはQtSqlQtXml、およびQtConcurrentそれらすべてを提供します。

全体として、Qtは確かな選択だと思います。しかし、GTK +も非常に有能です。

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

PS:Symbianもターゲットにして、Qtに行く予定です。

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


QtScriptはJavaScriptCoreを搭載していることを忘れないでください。JavaScriptCoreは、SquirrelFishExtremeのおかげで現在最速のJavaScriptエンジンです。
CMircea 2010

1
編集に関しては、GTK +用のWebKitGtk +があります。一方が他方よりも実質的に成熟していない限り、QtWebKitの存在がGTK +よりも優れているとは思えません。
マシュー

Rubyでコーディングする場合は、QtRubyを探してください。
ホセアンディアス2014

5
gtkmmGTK +のすべての機能は素晴らしいですが、最新の定義で実際のC ++を使用して、これまでに見た中で最もクリーンで読みやすいGUIコードを生成します...実際、最も耐えられるのは、私が最初にGUIプログラミングを学び始めたとき、それはgtkmm私の生きる意志を取り戻したその清楚さでした。ありがたいことに、忍耐力が報われ、それが非常に強力であることがわかり、C ++ 03よりもC ++ 14に夢中になりました。また、10年以上のAFAICTの間、同じプライマリメンテナによって手入れが行き届いています。私はちょうどなどファン、無所属、だ
underscore_d

3
ああ...シンビアン日...
daka

42

以前、GTK +、QT、wxWidgetsを使用しました。簡単な要約は次のとおりです。

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

次に、Pythonの別のプロジェクトにGTKを使用しました。このために私はPythonバインディングを使用し、すべてが多かれ少なかれスムーズに機能しました。UIがWindowsとMacでネイティブに見えないという事実はあまり好きではありませんでした。また、GTK +アプリを起動すると、無視しても問題ないように見える大量の重要な警告が常にデバッグされます。:S

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

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


13
GTK +アプリケーションが異なるプラットフォームで同じように見えることは良いことだと思います。つまり、UIを各ネイティブツールキットに正確に配置する方法を考えるために余分な週を費やす必要がないからです。また---when you launch a GTK+ app it always debug outputs loads of CRITICAL warnings which seem fine to ignore. :Sいいえ、あなたが何か間違ったことをしているのでない限り、それはうまくいきません。私自身のエラーに起因するものではなく、正しいコードを使用して修正するのが非常に簡単ではない重大な警告を一度も見たことがありません。そしてデバッグメッセージも警告も表示されません
underscore_d 2016

25

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

これは単純なGUI以上のものです。これは、アプリケーションフレームワーク全体です。私はそれをC ++用のJavaライブラリと考えていました。データベース、XML、ネットワーキングとスレッド化など、あなたが言及するすべてを提供します。また、コンテナやイテレータ、および多数のBoostライブラリに対応するものなども提供します。

Qtを使い始めたときに最も印象に残ったのは、非常に広範なドキュメントでした。Qt Assistantと呼ばれるプログラムを入手します。このプログラムは、完全にインデックス化された検索可能なAPIドキュメントをデスクトップに提供し、多数のコード例とチュートリアルを提供します。API情報を毎回Webで検索するのに大きな違いがあることがわかりました。メソッドシグネチャを覚えておく必要がある場合の非常に迅速なアクセス。

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

Qt Creatorを使用したことはありませんが、多くの良い点を聞いています。これは、Qtと明らかに強力に統合されたC ++ IDEです。偽のvimエミュレーションもあり、そのようなものが好きならいつでもいいです!

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

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

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


9

それはおそらくあなたが何をしたいかによるでしょう。Qtをお勧めします。GUI以上のものであり、Pythonバインディングが優れており(Gtkもそうです)、GUIライブラリ自体は(主観的に言えば)Gtkよりも快適です。

一方、GtkはLinuxの世界でより一般的であるため、おそらくWebでより多くのヘルプを得ることができます。Gtkが普及した理由は、おそらく技術的なメリットではなく、GnomeとUbuntuに関係していますが、ソフトウェアをこれら2つとうまくブレンドしたい場合は、Gtkを使用するとより簡単にそれを実現できます。


7

Qtは確かにしっかりしたDB、ネットワーク、スレッドサポートなどを持っています...それはクロスプラットフォームのGUIよりもはるかに多くのことをします(そしてそれはそれのほとんどを非常にうまくやります)。

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


3

QTの利点を他の回答に追加するだけです。QTには優れたドキュメントと独自のIDEおよびGUIクリエーターがあり、スロット/シグナル(基本的にはイベント)などのいくつかの新しい概念でC ++を拡張します。

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


11
Gtkには、GUIクリエーターのGlade(glade.gnome.org)もあります。
davidbe 2009

3

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

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

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

頑張れ。


5
サブセット?qmakeとmocを考えると、スーパーセットに似ています。
rr- 2015年

1

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


1

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

qt-project.org

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.