GUIがどのように機能し、いつ使い始めるべきかを誰かが説明できますか?[閉まっている]


16

約1か月間C ++を学んでいますが、先に進む前に、この退屈な質問を片付けたいと思います。GUIとは何ですか?

コマンドラインプログラミングは基本的なものであることがわかっていますが、GUIをいじるのは楽しいと思います。

他にも約300万の質問がありますが、それらを保存します:D


1
最後の行は私を
笑わせ

回答:


28

私はいくつかのGUIライブラリを一般化していますが、非常に高いレベルで理解する必要がある最も重要な概念は、GUIがイベント駆動型であることです。

コンソールアプリケーションでは、ユーザー入力は通常、定義した特定のポイントで発生します。ユーザーにプロンプ​​トを表示し、ユーザーの入力を待ち、その入力に基づいて何かを計算します。主な違いの1つは、入力が1か所でのみ発生し、コマンドライン(stdinC ++)からテキストを読み取ることです。

GUIアプリケーションでは、通常、さまざまなアクションを実行するボタンやテキストフィールドなど、入力が発生する可能性のある複数の場所があります。ここがイベントの出番です。たとえば、ボタンをクリックするとイベントがトリガーされます。このイベントは、通常イベントハンドラーによって処理される必要があります。通常、イベントハンドラーは、イベントオブジェクトを受け取り、イベントイベントが発生したときに呼び出されるメソッドです。ボタンはイベントハンドラーをどのように知っていますか?あなたは通常購読します(またはそれを聴きます)。

以下は「C ++に触発された」例です。これは実際のQTまたはC ++コードではありません。

class MyClickHandler : public ClickListener{
   void clickHandler(ClickEvent e){
      showAlertBox("The button "+e.getSource().getName()+" has been clicked"); 
   }
};

ボタンを作成するときに、ボタンに対してMyClickHandlerクラスのインスタンスを登録します。

...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...

これで、ボタンbがクリックされるたびに、「保存ボタンがクリックされました」というメッセージボックスが表示されます。

GUIアプリケーションには2つの段階があることを想像できます。

  • GUIの確立:すべてのオブジェクトが作成され、相互に接続される、起動時の短い期間。
  • イベントループ:あなたのGUIがループしながら、一つの大きなであり、ちょうどイベントがトリガされるまでアイドリングそこに座っています。

これは非常に簡単な例ですが、ボタンをクリックしたときにメッセージボックスを表示してみることをお勧めします。

フレームワークには、それらの多くがあります:C ++の場合、おそらくQtをお勧めします。

最後のアドバイス:バックグラウンドで何が起こっているかを本当に知るまで、GUIデザイナーに近づかないでください。簡単な例をいくつか作成し、最初にイベントループを理解してから、より複雑なレイアウトに移ることはそれほど難しくありません。


クラス定義の最後にセミコロンを追加し、継承をパブリックにすると、適切/可能なC ++構文になります。
Lstor

1
できた しかし、コードが実行可能にならないので、私は誤った期待を上げたくありませんでした。私の経験のほとんどはSwingであり、おそらくクラス名に反映されています。同じ概念は、異なるフレームワークで異なる方法で呼び出されます。
セバスチャンガイガー

1
+1これは、質問に答える唯一の答えのようです(私には、彼はフレームワークについてだけではなく、一般的な概念についても尋ねているようです)
Federico klez Culloca

1
Ewwww .... listenerいリスナーがらくた。
-DeadMG

7

これで、GUIプログラミングを学ぶのにこれまでと同じくらい良い時間です。C ++をご存知のように、QTをご覧になることをお勧めします。優れたドキュメンテーション、巨大なユーザーベース、多くの例/チュートリアルから学ぶことができます。


1
+1 for Qt-@David-Qtには、Qt Creatorと呼ばれる独自の開発環境があります。これは自己完結型で、無料で、他と比較して比較的単純です。Qtは強力で、直感的で、広範で、非常によく文書化されており、大規模でアクティブなユーザーベースを備えています。始めるのは簡単で、自分のことで遊んだり始めたりするための多くの例があります-これは、学ぶための素晴らしい方法です。ここから
ロジャーアトリル

私はこれに賛成票を投じる傾向があります。QTは、何に注意すべきかわからない場合、C ++での多くの本当に悪い習慣を奨励します。–わずか1か月のC ++の後、あなたはそうしません。さらに、C ++の複雑な側面についても触れます。可能であれば、最初に別の言語でGUIプログラミングを開始し、C ++を正しく使用することに集中します。
コンラッドルドルフ

3

Microsoft Visual Studio C ++ Expressから始めることもできます。IDEは非常にフレンドリーで使いやすい(そして無料です!)、最初のGUIアプリケーションを非常に迅速に作成できるようになります...これは、イベント駆動型プログラミングの基礎、異なるアプローチの理解に集中するのに役立ちますあなたが習得する必要があること。

WPF駆動型アプリケーションの構築から直接始めることもできますが、最初はWindows Formsから始めます。これは、MicrosoftのWindows Forms APIを備えた基本的なC ++であるため、把握しにくい技術の1つです。


1
VC ++ Expressでは、次を使用してGUIを作成できます。4.人気がなく、サポートが不十分(インテリセンスがなくても)で複雑すぎるC ++ / CLI。Qtはより簡単で、クロスプラットフォームであり、GUIデザイナーが優れており、小さな標準ライブラリを備えたC ++で非常に重要な非GUIクラスが大量にあります。
アントンバルコフスキー

0

StackOverflowに適した、おそらくc ++とタグ付けされた; とにかく。

これらのいくつかをグーグルで調べてください。Qt、WxWidgets、TheForgersのWinApi、Fltk ...

特にC ++を既に知っている場合は、GUIを使用するのはそれほど難しくありません。私が考えるWxWidgetsを使用してください。Qtは1か月の学習には少し複雑すぎます。数時間でWxを入手できます。


-1

ユーザーは複雑なものが好きではありません。コンソールは複雑なものであるため、より使いやすく理解しやすいGUIアプリケーションを作成する必要があります。これは私が見る最も明白な理由です。gtkまたはQtを見ることができます-これら2つは最も人気のあるものです。


2
CLIは複雑ではなく、定義上GUIはユーザーにとってより複雑です。よりアクセスしやすく、複雑ではありません。
オミヌス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.