質問

多くの人がどちらが良いかについて意見があるようです。私はこれらの意見を本当に求めているのではありません。詳細を知りたいのは、あるグラフィカルツールキットを別のグラフィカルツールキットと異なるものにし、QtとGtk +の違いはどれですか?

役に立ちましたか?

解決

Gtk +と直接話すことはできませんが、以前の仕事ではGtkmmを使用し、現在の仕事ではQtを使用しています。どちらもC ++であるため、その点では一貫していますが、GtkmmはGtk +コードの単なるラッパーであり、Gtk +コードはストレートCです。

ジョブを切り替えたとき、Uiコードの主な違いの1つは、2つのツールキットがレイアウトを処理する方法だったことを思い出します。 Gtkの方が良いと思った部分と、Qtのほうが良いと思った部分があります。どちらも、最終的にはウィジェットを必要な場所に配置できます。

Gtkmmでのデバッグは少し苦痛でした。クラスは一般に、構造体へのポインタを保持し、Gtk +関数を呼び出す以外は何もしなかったからです。余分なレベルの間接参照は迷惑になる可能性があります。

Qtには、少なくとも私が使用していたGtkmmのバージョンと比較して、さまざまな設定で役立つ補助コードがあります。プログラムに新しい次元を追加する必要がある場合、スレッド化、プロセス間通信、およびネットワーキングを容易にすることはすべて高く評価されます。それらを使用したい場合は、コンテナもありますが、STLコンテナよりも健全なインターフェイスを持っていると思いますが、最終的にはほぼ同じことを行うため、わずかな利点があります。

GtkmmとQtのシグナル/スロットメカニズムは異なります。 Qtは、信号/スロットに使用するメタ情報を生成するために、コンパイルプロセスの追加ステップに依存しています。シグナルまたはスロットを使用するオブジェクトはQObjectから継承する必要があり、QObjectの継承はダイヤモンド構造を持たない最初のものでなければなりません。これにより、たとえば、信号を発する抽象インターフェースを定義することが難しくなります。プラス面では、スレッドの問題を本質的に認識しており、必要に応じて信号/スロット接続をイベントベースの接続に変換します。 GtkmmはSigCシグナルを使用します。SigCシグナルは単純なC ++クラスであり、私にはさまざまな状況で役立つようです。また、私が思い出すように、接続を行うオブジェクトのみが魔法の基本クラスから継承する必要があります。さらに、スロットはオブジェクトであるため、非常に優れた適応可能なファンクターオブジェクトとしても使用できます。

他にも違いはあると思いますが、それが今思い出します。 Gtkmmでの私の最後の経験は約3年前だったので、それらのアイテムの一部は今までに変更されている可能性があることに注意してください。

他のヒント

違いを理解するには、履歴を理解することが最善です。

QTはUIとして開発され、KDEが最初に開発され始めた当初、いくつかのライセンス問題がありました。 KDEはQTを選択しました。当時はあまり選択がなかったためです(いくつか例を挙げると、Motif、Tcl / Tk)

GIMPは開発され始めていましたが、当時、Window Toolkitsは開発者が必要とするものに対してスクラッチができなかったため、Gimp Tool Kit(GTK)の作成を開始しました。しばらくして、GTKを書き直してオブジェクト指向(GTK +)にすることになりました。

また、この頃、QTのライセンスに関する潜在的な問題により、Gnomeが開始され、GTK +ライブラリを使用することになりました。

QTデザイン GTK Design エントリでは、システム間のいくつかの違いを確認できます。

QTがaと呼ばれることに注意してください:

  

クロスプラットフォームアプリケーション開発フレームワーク

GTK +はaと呼ばれます:

  

グラフィカルユーザーインターフェイスを作成するためのクロスプラットフォームウィジェットツールキット。

これらのエントリが信じられるとしたら、それが2つの大きな違いになると思いますが、今日の世界ではかなり良いラインだと思います。

何よりもまず、CからGtk +を使用できます。QtはC ++のみです。

また、Gtk +アプリケーションは、閉じるボタンを使用して、永続的に変化するダイアログを持つ傾向があります。 QtはOk / Apply / Cancelの線に沿っている傾向があります。ただし、ツールキットレベルでこれがどの程度適用されるかはわかりません。

プログラミングに関しては、Gtkがどのコールバックメカニズムを使用するかわかりませんが、Qtのシグナルスロットメカニズムは絶対に揺れ動きます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top