大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

Code::BlocksでwxSlider, wxStaticText, wxColour

株式会社クローバーフィールドの経営理念
著者:津路高広
公開日:2019/03/19
最終更新日:2019/03/19
カテゴリー:技術情報
タグ:

津路です。

前回の続きです。
今回も、wxStaticTextのフォントサイズを変える努力をしてみました。
Code::Blocksから離れて、以下のシンプルなソースコードを作ってみました。

#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の色変更をやってみます。

    上に戻る