2016-11-20 8 views
1

JavaFXのようなcppで古典的なGUIを作成する方法はありますか?フローティングボタン、テーブル、グラフなどの要素を作成したいと思います。私はqtのようなツールを知っていますが、私はそれで大丈夫ではありません。私はwin32 APIを試しましたが、それはWindowsのみです。古典的なGUIをC++で作成するには

+1

私は古典的なGUIフレームワークであるJavaFXに同意しません。 JavaFXまたはスイングまたはWPF for C#は、GUI用の高度なフレームワークです。 java.awtは古典的なGUIに似ており、この領域には多くのC++ GUIライブラリがあります。 JavaFXに最も近いのはQT afaikです。[アニメーションスクリプトとそのすべて](https://www.youtube.com/watch?v=VAhLnJc5iEY)です。 – zahir

答えて

5

GUIライブラリは一般に「ウィジェットツールキット」と呼ばれ、さまざまなクロスプラットフォームGUIウィジェットツールキットが用意されていますが、異なるオペレーティングシステム環境ではUIパラダイムが異なるため、たとえば、macOSとUbuntuのメニューバーは常に上にありますが、Windowsや他のLinuxデスクトップではそうではありません。

だから、あなたが作るには、2つの基本的な選択肢があります。

  1. は、単一のクロスプラットフォームのGUIツールキットを使用してください - 一般的に、単一のGUIプロジェクトを作成することを意味するが、コントロールと機能のツールキットの選択にあなたを制限し、あなたのツールキットがネイティブウィジェット(Java、WPF、Qtなど)を使用していないか、プラットフォームのネイティブパラダイムを使用できないために、ユーザーに比較的貧弱なユーザーエクスペリエンスを与えます。
  2. プラットフォームごとに新しいネイティブGUIを作成します。これはより多くの作業を意味しますが、ユーザーエクスペリエンスは向上します。クロスプラットフォームのGUIツールキットについて

、主なオプションは、次のとおり

  • Qtの
  • GTK +
  • wxWidgetsの

3との間の比較のために、このQAを参照してください。 Which, if any, achieves Windows native look: GTK+, wxWidgets, Qt, FLTK?

(TL; DR:WxWidgetsはnaを使用します開発は難しいが、 Qtは、各APIを理解する必要があるでしょう、あなたがターゲットにする必要がある各プラットフォームのネイティブUIのための最高の開発者の経験を提供していますが、あなたが知っておく必要があり、他の多くの弾丸のポイントを持っている)

  • のWin32:
    • MFC(APIは、現代の基準では醜いですが、そのようなコモンコントロールなどのメインのWin32 UIパラダイムとAPIを、カプセル化しないただし、末日サポートする上り坂の戦いのために準備されます。高DPI、双方向テキスト、高品質な2DレンダリングなどのUI機能GDI/GDI +が途中で出ています。つまり、Dir ect2D - MFCがGDIを想定しているので楽しい)アプリケーションがサンドボックス化できる(Windows 10のみで実行できる)場合は、UWP/XAML(すべてネイティブなのでCLR関与していない)。
    • WPF:.NET Frameworkに依存し、UIコードをC#で作成するアプリケーションに慣れている場合、WPFを使用すると、高品質のユーザーインターフェイスを簡単に作成できます。ただし、 WPFのアプリケーションはWindows 10でうんざりしていて(つまり醜いです)、WPFのデフォルトコントロールセットは非常に不思議ですが、手段(つまり時間、お金、人)があれば、大きな成果を得ることができます。 WPF用のXAMLは一般にUWPに移植可能です。
  • macOS:Cocoaでこれを行うのは難しいことです。macOSをターゲットにしている場合は、Swift(またはObjective-C)にUIレイヤーを作成し、C++ブリッジを使用して残りのアプリケーションコードにリンクすることを強くお勧めします。
  • Linux:Linuxは単なるカーネルなので、ネイティブウィジェットのセットはユーザのデスクトップ環境に依存しますが、ほとんどのデスクトッププログラムはGTKを使用しているようです。 GTKを使うつもりならば、GTKのクロスプラットフォーム機能を使ってWindowsとmacOSをサポートすることもできます。

結論としては、それは困難で多くの作業です。 :)なぜ、今日(2017年中頃)多くのソフトウェアタイトルが、電子(例えば、スラック、VSコード、アトム)を使用してウェブ上に直接(例えばFacebook、StackOverflow、SalesForce) (PhoneGapアプリ、Spotifyなど)のホストされたウェブビュー。

関連する問題