GNU/Linux >> Linux の 問題 >  >> Linux

GTK+ と Qt のどちらを選択すればよいですか?

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

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

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

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

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

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

Clutter を併用することはできますが、GTK+ にはそれほど多くの機能はありません。

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

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

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

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

EDIT:Qtでも素晴らしいのは QtWebView です :Chromium を Qt アプリケーションに取り込み、Web コンテンツを表示します。また、Awesomium や Berkelium などを使用して Web コンテンツをアプリケーションに埋め込んでいる企業もあります。


以前は GTK+、QT、wxWidgets を使用していました。以下に簡単な要約を示します:

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

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

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

要約:私は QT を支持します。ライセンスは非常に優れており、SDK とドキュメントは非常に優れています。


Linux
  1. C++:どの正規表現ライブラリを使用すればよいですか?

  2. Linux で windows.h の代わりに何を使用すればよいですか?

  3. NGinx と PHP はどのユーザーとして実行する必要がありますか?

  1. Linuxのサウンドテーマ:すべてのユーザーが知っておくべきこと

  2. ApacheとNginx:どちらのWebサーバーを選択する必要があるか

  3. コンテンツキュレーションとは何ですか?どのように行う必要がありますか?

  1. IPv6を有効にする前に知っておくべきこと

  2. .cache は何をしますか?膨大なディスク容量を消費します

  3. Linuxでの理想的なホームディレクトリのアクセス許可はどうあるべきか