私は約1か月間C++を学習してきました。これ以上進む前に、私が抱えているこの面倒な質問を解決したいと思います。 GUIが何であるかは知っていますが、それがどのように機能するのか、そしておそらく人気のあるGUIの例は本当に知りませんか?
コマンドラインプログラミングは基本的なことを知っていますが、GUIをいじるのは楽しいでしょう。
他に約300万の質問がありますが、保存します:D
いくつかのGUIライブラリを一般化していますが、非常に高いレベルで理解する必要がある最も重要な概念は、GUIが イベント駆動型 であることです。
コンソールアプリケーションでは、ユーザー入力は通常、定義した特定のポイントで発生します。ユーザーにプロンプトを表示し、ユーザーの入力を待ち、その入力に基づいて何かを計算します。主な違いの1つは、入力がoneの場所でのみ発生することです。コマンドラインからテキストを読み取っています(C++ではstdin
)。 。
GUIアプリケーションでは、通常、さまざまなアクションを実行するボタンやテキストフィールドなど、入力が発生する可能性のある場所にmultipleの場所があります。ここでイベントが始まります。たとえば、ボタンをクリックするとイベントがトリガーされます。このイベントは、イベントハンドラーで処理する必要があります。これは通常、イベントオブジェクトこのようなイベントがトリガーされたときに呼び出されます。ボタンはどのようにしてイベントハンドラーを認識しますか?通常はサブスクライブします(またはリッスンします)。
これは「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つの段階があると想像できます。
これは非常に単純な例ですが、ボタンをクリックしたときにメッセージボックスを表示してみてください。
フレームワークについては、そこにたくさんあります。C++の場合、おそらくQtをお勧めします。
最後のアドバイス:バックグラウンドで何が起こっているかを本当に理解するまで、GUIデザイナーから離れてください。簡単な例をいくつか記述し、最初にイベントループを理解してから、より複雑なレイアウトに移るのはそれほど難しくありません。
今こそ、GUIプログラミングを学ぶのに相応しい時です。 C++を知っているので、QTを確認することをお勧めします。素晴らしいドキュメント、巨大なユーザーベース、そして学ぶことができる多くの例/チュートリアル。
Microsoft Visual Studio C++ Express で始めることもできます。 IDEはとてもフレンドリーで使いやすく(しかも無料です!)、最初のGUIアプリケーションを非常にすばやく作成できるようになります...これは基本の理解に集中するのに役立ちます。 イベント駆動型プログラミング の、習得する必要がある別のアプローチ。
WPF駆動型アプリケーションの構築から直接始めることもできますが、最初はWindowsフォームから始めます。これは、MicrosoftのWindowsフォームAPIを備えた基本的なC++なので、把握する必要のないテクノロジーの1つです。
多分StackOverflow、タグ付きc ++に適しています。とにかく。
これらのいくつかをグーグルで調べてください。 Qt、WxWidgets、TheForgersのWinApi、Fltk ...
特にc ++をすでに知っている場合は特に、GUIを使用するのはそれほど難しくありません。私が考えているWxWidgetsを使ってください。 Qtは1か月の学習には少し複雑すぎます。 Wxは数時間で受け取ることができます。