Code::BlocksでwxSlider, wxStaticText, wxColour
津路です。
前回の続きです。
今回も、wxStaticTextのフォントサイズを変える努力をしてみました。
Code::Blocksから離れて、以下のシンプルなソースコードを作ってみました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #include <wx/wx.h> #include <wx/slider.h> #include <iostream> using namespace std; const int ID_SLIDER= 1; const int ID_STATIC= 2; const int ID_PANEL1 = 3; class MyFrame : public wxFrame { public: MyFrame(); wxPanel* Panel1; wxSlider* Slider1; wxStaticText* st1; wxBoxSizer* BoxSizer1; void OnScroll(wxScrollEvent&); int pos; }; class MyApp : public wxApp { public: virtual bool OnInit(); }; IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { MyFrame* frame = new MyFrame(); frame->Show(true); return true; } MyFrame::MyFrame() : wxFrame(NULL,-1,"slider test",wxDefaultPosition,wxSize(400,400)) { BoxSizer1 = new wxBoxSizer(wxVERTICAL); //Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1")); Slider1 = new wxSlider(this, ID_SLIDER, 0, 0, 100, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_SLIDER1")); Slider1->SetTickFreq(10); Slider1->SetPageSize(10); Slider1->SetLineSize(10); Slider1->SetTick(10); Slider1->SetSelection(0, 100); // slider = new wxSlider(this,ID_SLIDER,0,0,100,wxDefaultPosition,wxDefaultSize); Connect(ID_SLIDER,wxEVT_COMMAND_SLIDER_UPDATED,wxScrollEventHandler(MyFrame::OnScroll)); st1 = new wxStaticText(this,ID_STATIC,_("Colour")); //wxFont font = wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT); //font.SetPointSize(24); wxFont* font = new wxFont(24,wxFONTFAMILY_SWISS, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL, false, wxT("Tahoma")); st1->SetFont(*font); BoxSizer1->Add(Slider1,1, wxALL|wxEXPAND|wxFIXED_MINSIZE|wxALIGN_LEFT, 5); BoxSizer1->Add(st1,1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5); SetSizer(BoxSizer1); BoxSizer1->Fit(this); BoxSizer1->SetSizeHints(this); } void MyFrame::OnScroll(wxScrollEvent& ev) { pos = Slider1->GetValue(); wxFont Font = st1->GetFont(); int size = Font.GetPointSize(); Font.SetPointSize(size+2); bool b = st1->SetFont(Font); Font = st1->GetFont(); size = Font.GetPointSize(); cout << size << endl; Layout(); GetSizer()->SetSizeHints(this); } |
これでも変化はありませんでした。
フォントをデフォルトにしてみたり、独自のフォントにしてみたり。
あるいは、Sizer内に配置してみたり。
結局、遊びに終わりましたが、少しは勉強できました。
Layout()や、GetSizer()->SetSizeHints(this) など、内容がわかりました。
次は、widgetの色変更をやってみます。