wxGladeは、wxWidgetのGUIを作成するツールです。このページはwxGladeのヘルプカードです。入門者向けの解説サイトをご覧になってからの方がよいかと。
sizerにはめ込んだあとの微調整の方法です。
○ボタンなど、最小の固定サイズを割り当てたいときは--->proporiorの値を0にする。
○テキスト入力など、ウインドウサイズに連動させたいときは--->proporiorの値の比率で全体を分割。
|<------ [2] ------------>|<--- [0]---->|<---- [1]------->| value of proporior
|<------ 200 pix------>|<-100 pix->|<---100pix--->|
[_______________] [minimum ] [__________]
step1)Frameのプロパティを選択。widgetタブのHas MenuBarをチェック-->menubarが追加される
step2)menubarのプロパティを選択。"Edit menus..."ボタンを押し、メニュー編集ダイアログを表示。
step3)メニュー編集ダイアログで追加。"&"をつけたキャラクターがショートカットキーになる。"&File"
wxGladeでは、生成したソースコードにあとから修正された内容を保存したままでの更新が可能なはずですが、うまくいかない場合があります。残念ながら、これがうまくいかない場合もあります。そこで、下記の方法により、派生クラスを作り、その派生クラスにコードを加える実装にすれば、あとからいくらでも更新ができます。
参考)http://www15.big.or.jp/~rdda/wx/0002.html
(wxGladeでの作業)
・WIDGET_IDの定義のコードを分離
フレームのextra codeに#include "widgets_id.h"を追加する。
widgets.hでIDを一括して定義。
・コントロールへのアクションに対する処理を行う、ハンドラーメソッドを追加する
properties/EventsにHanderを追加
・最初のソースコードを生成する
ApplicationのName,Classをチェック。
Separate file for each classesをチェック。
生成
以後アプリケーションへの変更はないので、ApplicationのName,Classのチェックをはずす。
(エディタでの編集)
・細かな動作を記述するためのクラスを、作成したフレームクラス(MyFrame)を継承したクラス(CustomFrame)を作成する。こうすると、wxGladeの修正はMyFrame.c, MyFrame.hに行われるが、CustomFrameへの修正はないので、自由にGUI変更ができる。
CustomFrame.h, CustomFrame.cppを作成する。
widgetのイベントハンドラーをオーバーライドし、イベントに対する実際の動作を記述。
(例)
class CustomFrame:public MyFrame{
public:
CustomFrame(wxWindow* parent, int id, const wxString& title,
const wxPoint& pos, const wxSize& size, long style);
virtual bool On_Btn1(wxCommandEvent &event){
wxMessageBox(_("Btn1 pushed!!!"),_("caption one"));
}
};
・main.cppでMyFrameを直接使う代わりにそれを継承したCustomFrameを使うように変更。
#include "CustomFrame.h"
...
bool MyApp::OnInit()
{
wxInitAllImageHandlers();
CustomFrame* frame_1 = new CustomFrame(NULL, wxID_ANY, wxEmptyString);
SetTopWindow(frame_1);
frame_1->Show();
return true;
}