简体   繁体   English

code :: blocks wxWidgets更改wxStaticBoxSizer的字体

[英]code::blocks wxWidgets Changing the font of a wxStaticBoxSizer

I know that our questions put on evidence our knowledge, so be gentle please :). 我知道我们的问题证明了我们的知识,所以请谦虚:)。 This is one of mine in C++. 这是C ++中的一种。 Well, here we go. 好吧,我们开始。

I'm trying to change from codeblocks the font of a StaticBoxSizer. 我正在尝试从代码块更改StaticBoxSizer的字体。 I can change the font of the wxStaticBox in the properties section but I'm having a hard time finding a way to access the same thing for the wxStaticBoxSizer FROM wxSmith in codeBlocks. 我可以在属性部分更改wxStaticBox的字体,但是我很难找到一种方法来从codeBlocks中的wxSmith访问wxStaticBoxSizer的相同内容。

I tried without success to acces the staticBox within the sizer. 我尝试未成功在sizer中访问staticBox。 What's worst, i dont know how to access any of the wxSmith's elements from the code editor. 最糟糕的是,我不知道如何从代码编辑器访问任何wxSmith的元素。

All hints are welcomed and thank you in advance. 欢迎所有提示,并提前感谢您。

Edit: I know for sure that there's nothing wrong with the IDE but here's the header and here the cpp . 编辑:我肯定知道IDE没什么问题,但是这里是标题 ,这里是cpp

I noticed that the sizers are not declared in the headers but in the constructor's implementation of the dialog. 我注意到,大小调整器不在标题中声明,而是在对话框的构造函数实现中声明。 I try to access the sizer in the constructor but to no avail. 我尝试在构造函数中访问sizer,但无济于事。

The links works to me but here are the contents of the files directly. 链接对我有用,但是这里是直接文件的内容。 I simplified the code to include the minimum of elements. 我简化了代码以包含最少的元素。

header: 标头:

/***************************************************************
 * Name:      sizerTestMain.h
 * Purpose:   Defines Application Frame
 * Author:    RainMaker ()
 * Created:   2015-11-11
 * Copyright: RainMaker ()
 * License:
 **************************************************************/

#ifndef SIZERTESTMAIN_H
#define SIZERTESTMAIN_H

//(*Headers(sizerTestFrame)
#include <wx/sizer.h>
#include <wx/menu.h>
#include <wx/button.h>
#include <wx/frame.h>
#include <wx/statusbr.h>
//*)

class sizerTestFrame: public wxFrame
{
    public:

        sizerTestFrame(wxWindow* parent,wxWindowID id = -1);
        virtual ~sizerTestFrame();

    private:

        //(*Handlers(sizerTestFrame)
        void OnQuit(wxCommandEvent& event);
        void OnAbout(wxCommandEvent& event);
        void OnButton1Click(wxCommandEvent& event);
        void OnButton3Click(wxCommandEvent& event);
        //*)

        //(*Identifiers(sizerTestFrame)
        static const long ID_BUTTON1;
        static const long ID_BUTTON2;
        static const long ID_BUTTON3;
        static const long idMenuQuit;
        static const long idMenuAbout;
        static const long ID_STATUSBAR1;
        //*)

        //(*Declarations(sizerTestFrame)
        wxButton* Button1;
        wxButton* Button2;
        wxButton* Button3;
        wxStatusBar* StatusBar1;
        //*)

        DECLARE_EVENT_TABLE()
};

#endif // SIZERTESTMAIN_H

and this is the cpp 这是cpp

/***************************************************************
 * Name:      sizerTestMain.cpp
 * Purpose:   Code for Application Frame
 * Author:    RainMaker ()
 * Created:   2015-11-11
 * Copyright: RainMaker ()
 * License:
 **************************************************************/

#include "wx_pch.h"
#include "sizerTestMain.h"
#include <wx/msgdlg.h>

//(*InternalHeaders(sizerTestFrame)
#include <wx/intl.h>
#include <wx/string.h>
//*)

//helper functions
enum wxbuildinfoformat {
    short_f, long_f };

wxString wxbuildinfo(wxbuildinfoformat format)
{
    wxString wxbuild(wxVERSION_STRING);

    if (format == long_f )
    {
#if defined(__WXMSW__)
        wxbuild << _T("-Windows");
#elif defined(__UNIX__)
        wxbuild << _T("-Linux");
#endif

#if wxUSE_UNICODE
        wxbuild << _T("-Unicode build");
#else
        wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
    }

    return wxbuild;
}

//(*IdInit(sizerTestFrame)
const long sizerTestFrame::ID_BUTTON1 = wxNewId();
const long sizerTestFrame::ID_BUTTON2 = wxNewId();
const long sizerTestFrame::ID_BUTTON3 = wxNewId();
const long sizerTestFrame::idMenuQuit = wxNewId();
const long sizerTestFrame::idMenuAbout = wxNewId();
const long sizerTestFrame::ID_STATUSBAR1 = wxNewId();
//*)

BEGIN_EVENT_TABLE(sizerTestFrame,wxFrame)
    //(*EventTable(sizerTestFrame)
    //*)
END_EVENT_TABLE()

sizerTestFrame::sizerTestFrame(wxWindow* parent,wxWindowID id)
{
    //(*Initialize(sizerTestFrame)
    wxMenuItem* MenuItem2;
    wxMenuItem* MenuItem1;
    wxMenu* Menu1;
    wxStaticBoxSizer* theSizer;
    wxMenuBar* MenuBar1;
    wxFlexGridSizer* FlexGridSizer1;
    wxMenu* Menu2;

    Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id"));
    FlexGridSizer1 = new wxFlexGridSizer(0, 3, 0, 0);
    theSizer = new wxStaticBoxSizer(wxHORIZONTAL, this, _("I want to change this title"));
    Button1 = new wxButton(this, ID_BUTTON1, _("with this"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
    theSizer->Add(Button1, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    Button2 = new wxButton(this, ID_BUTTON2, _("or this"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
    theSizer->Add(Button2, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    FlexGridSizer1->Add(theSizer, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    Button3 = new wxButton(this, ID_BUTTON3, _("Or this"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
    FlexGridSizer1->Add(Button3, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    SetSizer(FlexGridSizer1);
    MenuBar1 = new wxMenuBar();
    Menu1 = new wxMenu();
    MenuItem1 = new wxMenuItem(Menu1, idMenuQuit, _("Quit\tAlt-F4"), _("Quit the application"), wxITEM_NORMAL);
    Menu1->Append(MenuItem1);
    MenuBar1->Append(Menu1, _("&File"));
    Menu2 = new wxMenu();
    MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info about this application"), wxITEM_NORMAL);
    Menu2->Append(MenuItem2);
    MenuBar1->Append(Menu2, _("Help"));
    SetMenuBar(MenuBar1);
    StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, 0, _T("ID_STATUSBAR1"));
    int __wxStatusBarWidths_1[1] = { -1 };
    int __wxStatusBarStyles_1[1] = { wxSB_NORMAL };
    StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1);
    StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1);
    SetStatusBar(StatusBar1);
    FlexGridSizer1->Fit(this);
    FlexGridSizer1->SetSizeHints(this);

    Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&sizerTestFrame::OnButton1Click);
    Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&sizerTestFrame::OnButton3Click);
    Connect(idMenuQuit,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&sizerTestFrame::OnQuit);
    Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&sizerTestFrame::OnAbout);
    //*)
}

sizerTestFrame::~sizerTestFrame()
{
    //(*Destroy(sizerTestFrame)
    //*)
}

void sizerTestFrame::OnQuit(wxCommandEvent& event)
{
    Close();
}

void sizerTestFrame::OnAbout(wxCommandEvent& event)
{
    wxString msg = wxbuildinfo(long_f);
    wxMessageBox(msg, _("Welcome to..."));
}

void sizerTestFrame::OnButton1Click(wxCommandEvent& event)
{
}

void sizerTestFrame::OnButton3Click(wxCommandEvent& event)
{

}

I solved my problem ! 我解决了我的问题! ! This is what did. 这是做的。

1 - I noticed that the sizer was not included in the header so I looked for the ways to include it from wxSmith. 1-我注意到在标头中未包含sizer,因此我从wxSmith寻找了将它包括在内的方法。 The magic came from the "isMember" checkBox in the properties table. 魔术来自属性表中的“ isMember”复选框。 It seems that this is the way of including it to the header and then accessing it. 看来这是将其包含到标头然后访问它的方式。

2 - I created a member function at the end of the constructor: 2-我在构造函数的末尾创建了一个成员函数:

void IbDialogue::setFonts();

3 - In the function implementation, I accessed the wxStaticBox of the wxStaticBoxSizer and set it like this: 3-在函数实现中,我访问了wxStaticBoxSizer的wxStaticBox并进行了如下设置:

wxFont* nf = new wxFont;
StaticBoxSizer7->GetStaticBox()->SetFont(nf->Bold());

And VOILÀ the font is mastered ! 并熟练掌握VOILÀ字体! ! !

for (int i=0; i<1000000; i++)
cout<<(HA HA HA HA);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM