web-dev-qa-db-ja.com

GUIを作成するための最良のライブラリ(gtk、qt、win32 apiなど)?

あなたの意見では、WindowsでGUIを作成するための最良の方法は何ですか? gtkまたはwin32apiで?

WindowsにGTKをお勧めしますか?はい ?番号 ?どうして ?

19
xRobot

どれどれ。

  • Win32は非常に低レベルで、Cベースであり、使いにくいです。
  • MFCは廃止されたと見なされます。
  • .NETを使用したC#(またはC++)は、おそらくWindows固有の開発の主な選択肢です。
    • そのコードを他のプラットフォーム(Mono)に移植する方法は半限定的です。
  • Javaは、「実行するだけ」のプラットフォームに依存しないコードに最適です。 申し訳ありませんが、C++とおっしゃいました。
  • QTは比較的プラットフォームに依存しません。
  • もちろん、GTK +は、個人的にはあまり経験がありませんが。

個人的には、Windows固有の処理を行う場合は、.NETを使用します。VisualStudioのツールは非常に強力であり、すべてを網羅した優れたスイートです。

プラットフォームに依存しないものにはJavaを使用しますが、それはあなたが選択するツールではないかもしれません。 QTがその目的で多く使用されているのを見てきました。

16
EboMike

Windows専用のGUIを作成している場合は、WIN 32Apiを強くお勧めします。 GTK +、pyGtk、FLTKで多くのアプリケーションを作成し、Qt、MFC、SmartWin ++を学びました。私を信じてください、しかし私はWin32Apiが一番好きです。学習曲線が急な場合がありますが、ネイティブWindowsアプリケーションを作成する場合は、最速で最高です。また、プログラムが複雑になるほど、Win32Apiは他のツールキットと比較して簡単になります。また、Win32 Apiで実行できることがありますが、他のツールキットでは実行できません。

テスト済み:

開始時間(メニューとボタンを備えた単純なGUI):GTK + = 7秒; Qt = 4秒; WxWidgets = 3.32秒; FLTK = 1秒; Win32 Api = 0.34秒;

使用スペース:Gtk + = 132 kb; Qt = 4.5 mb; WxWidgets = 4.5 mb; FLTK = 54 kb; Win32 Api = 6.5 kb;

21
Burning Prodigy

Qt、wxWidgets、GTK +/gtkmm、WinAPI、MFC、.NET WinForms/WPF ...から選択できるGUIツールキット/フレームワークが本当にたくさんあります。これらは人気のあるものだけです。

自分をC++に制限しているので、.NETを削除します。NET上のC++は、管理されていない世界と管理されている世界の間の接続として機能することを目的としているためです。これは、他のタイプの開発に使用できないという意味ではありませんが、構文が厄介で、数え切れないほどの落とし穴があるため、使用しません。さらに、VSのWinFormsコードジェネレーターは、フォームのコードをヘッダーファイルに配置します。brrrr

他の人が述べているように、WinAPIはCで記述されており、非常に高速で強力ですが、レベルが非常に低く、プログラミングや学習が容易ではありません。 MFCはC++で記述されているためオプションであり、WinAPIよりも使いやすく、非常に強力です。ただし、これはほとんど廃止されています(ほとんどの場合、.NETが存在するため)。

GTK +/gtkmm(GTK +のC++ラッパー)はお勧めしませんWindowsの場合ネイティブウィンドウの外観が得られないため、開発者のマシンでセットアップするのはかなり面倒で、ドラッグもしますユーザーマシンにインストールする必要のある大量の依存関係。特にgtkmmは非常に美しいクラス階層とデザインを持っているので、それは実際には残念です。おそらく最もよく設計されたGUIライブラリの1つ:)

そうは言っても、私は何をお勧めしますか? QtまたはwxWidgetsのいずれか。どちらも(かなり現代的な)C++で書かれており、積極的に開発されており、優れたライブラリデザインを備え、マルチプラットフォームで実行され、多くの機能を提供します。いずれにせよ、ここの回答にリストされているライブラリのいくつかを試してみて、どれが最も簡単にやりたいことを実行できるかを確認してください:)

13
Christian

win32 apiは複雑すぎ、MFCは煩わしすぎます。私はWindowsでMFC、win32api、およびQtを使用しました。私の意見では、Qtが最高です。私はGTKを試したことがないので、何も知らずに申し訳ありません。

2019年の編集:これらのオプションはすべてoutdatedのようですが、クロスプラットフォームソリューションはどうですか、 react-native windowselectron

6
fangzhzh

個人的にはQtが好きですが、実際にはどのような種類のユーザーインターフェイスを作成するかによって異なります。

Win32に対して:

  • 些細なことを達成するための低レベル、高複雑さ。あなたはすべてをしなければなりません

  • このルートに行くなら、 Petzold のような本をお勧めします。

プロQt:

  • 格好良いGUI

  • スタイルシートを作成することで、ルックアンドフィールを非常に簡単に変更できます

  • 信号とスロットのメカニズムは、「ボタンがクリックされました」などのUIイベントを通知します。

  • 素敵なレイアウトシステム

  • Visual StudioIDEと統合

  • 最新のオブジェクト指向c ++コード、理解と使用が簡単

  • Qtアシスタント(非常に優れたドキュメント)

  • 比較的リベラルなライセンス(LGPL)

  • QtDesigner-フォームデザインに使用できるWYSIWYGデザインツール

  • XML、ネットワーキング、イベントループ、スレッド化、データベースアクセスなど、その他の豊富なc ++機能が付属しています。

Qtに対して:

  • MOCコンパイラを使用する中間ステップ

プロWPF:

  • 新しいWindowsプラットフォームの新しいWPF機能が必要な場合は、WPFが最適です。
4
Ralf

私は過去にマルチプラットフォームアプリケーションにGTK +を使用しました。習得して使用するのは比較的簡単だと思いました。私の考えでは、GTK +の主な利点は、アプリケーションを他のウィンドウシステムに移植できることです。そして主な欠点は、他のWindowsアプリケーションとまったく同じようには見えないことです。クロスプラットフォームの作業を行っている場合、またはすでにGTK +に精通している場合(そして新しいツールキットの学習に費やす時間がない場合)は、それをお勧めします。

4
Bowie Owens

どちらもc用ですが、gtk(gtkmm)用の優れたラッパーがあります。

gtkには独自の外観があるため、ユーザー側でui要素のスキニングはありません(Windowsスタイルの場合)。しかし、私はそれでもっとプログラミングするのが好きです。

win32、mfc、.netは主にmsビジュアルスタジオに限定されていますが、gtkはvsで使用するのが非常に困難です。

win32、.net、gtkmm、qtをご覧ください。簡単なhelloworldプログラムを作成してコンパイルしてみてください

win32の利点:

  • ネイティブWindowsコード
  • 速い

欠点:

  • クラスはなく、ハンドル付きのcのみ(非常にくだらない)
  • 私の意見では非常に悪い文書化

gtk(mm)の利点:

  • 習得/プログラミングが簡単
  • よく文書化されている

欠点:

  • 開発ファイルのインストールがどういうわけか難しい
  • ネイティブウィンドウは表示されません
4
M3t0r

Linux(またはMac)の互換性が懸念される場合は、Qt。それ以外の場合はWin32。

3
Seva Alekseyev

WinformsまたはWPFを試してみることをお勧めします。 C/C++の使用に制限されている場合は、コンパイラの/ clrオプションを使用して.NETコードを埋め込み、WinformsまたはWPFの.NETコードを埋め込むことができます。出典:

http://msdn.Microsoft.com/en-us/library/k8d11d4s(VS.71).aspx
http://msdn.Microsoft.com/en-us/library/ms754130.aspx
http://msdn.Microsoft.com/en-us/library/system.windows.forms.form.aspx
個人的体験

1
bbosak

プラットフォームに依存しない開発には、現在のGTKではなくQtをお勧めします。 GTK2の描画は、QtやWin32と比較して非常に低速でした。ネイティブのルックアンドフィールが好きなら、 wxWidgets があなたのために作られています。

0
Vantomex