c++ - 如何创建窗口小部件(按钮)的派生类

标签 c++ user-interface wxwidgets

我是新手,正在设计wxwidgets和c++的风格,在本主题中,我想问一下如何创建派生类(继承MainFrame类的APMainFrame)形式的小部件(按钮)

代码MainFrame GUI:

MainFrame::MainFrame( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxFrame( parent, id, title, pos, size, style )
{
    this->SetSizeHints( wxDefaultSize, wxDefaultSize );
    this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_WINDOWFRAME ) );
    .....
    this->SetMenuBar( m_menubar1 );
    this->Centre( wxBOTH );
}

和APMainFrame.h代码:
class APMainFrame : public MainFrame
{
    public:
        /** Constructor */
        APMainFrame( wxWindow* parent );
    //// end generated class members
        wxButton* HelloWorld; // here i wanna create function and button for GUI
        void OnExit(wxCommandEvent& event);
private:
        DECLARE_EVENT_TABLE()
};

enum
{
    BUTTON_Hello = wxID_HIGHEST + 1 
};

和文件APMainFrame.cpp:
BEGIN_EVENT_TABLE(APMainFrame, MainFrame)
EVT_BUTTON(BUTTON_Hello, APMainFrame::OnExit) 
END_EVENT_TABLE() // The button is pressed

APMainFrame::APMainFrame( wxWindow* parent )
:
MainFrame( parent )
{
    HelloWorld = new wxButton(this, BUTTON_Hello, _T("Hello World"),
        // shows a button on this window
        wxDefaultPosition, wxDefaultSize, 0); 

}

void APMainFrame::OnExit(wxCommandEvent& event)
{
    Close(TRUE);
}

我只是想创建Widgets形式的Drived类。
非常感谢。

最佳答案

您需要在wxPanel派生框架中添加一个面板(wxFrame)和一个sizer。

您已经创建了按钮,但是还需要将其添加到框架中,以便它知道如何渲染它。

因此,像这样:

MainFrame( parent )
{
    wxPanel* panel = new wxPanel(this, wxID_ANY);
    wxBoxSizer* sizer = new wxBoxSizer(wxVERTICAL);
    panel->SetSizer(sizer);
    HelloWorld = new wxButton(this, BUTTON_Hello, _T("Hello World"),
        // shows a button on this window
        wxDefaultPosition, wxDefaultSize, 0); 

    sizer->Add(HelloWorld);
}

其他有用的资源:
  • Overview of Sizers
  • Sizers explanation with pictures
  • wxWidgets示例
  • 关于c++ - 如何创建窗口小部件(按钮)的派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61182190/

    相关文章:

    c++ - 无法更改 QSettings 的路径

    c++ - 在 C++ TDD 中调用重载 const 与非 const 方法的好方法?

    c++ - 将 STL unicode 字符串转换为 wxString 给出空字符串

    c++ - 传递值和复制省略优化

    c++ - C++ 中的对象究竟是什么?

    c++ - 从 IE 9 拖放到我的应用程序中

    user-interface - flutter :将常规小部件放在CustomPaint Canvas 顶部

    c# - 管理 GUI 状态的最佳方法是什么(创建、编辑、读取模式...)

    c++ - 为什么容器节点不能在wxDataViewCtrl中有多个列

    c++ - wxWidgets 2.9.1 - 使用多个 wxStaticBoxes 时键盘导航出现问题