哈喽,我是杨小乐,一个初入行业的菜鸟,这里简单下wxWidget的初步认识,如有错误,欢迎指正。 一个wxWidget+FormBuilder的简单项目,包括以下几个部分,如图: 界面定义文件:这里代码省略了引用的一些头文件,因为用类codelite集成开发环境,会自动载入。 界面实现文件:这里是纯图形实现,最好不要有函数功能的具体实现,因为一旦在FormBuilder里更改界面或增加控件,就会刷新gui.cpp。所以要采取界面和实现分离的设计。 主程序的头文件: 主体功能函数实现文件:说明
include里一般放头文件,头文件里放各种引用的库文件。
resources里放的gui.fbp,也就是FormBuilder的可视化界面。
src一般是实现文件 .cppgui.h
//定义主窗体类 class Frame declaration class MainFrameBase : public wxFrame { private: protected: //定义控件 widget declaration wxMenuBar* m_menuBar; wxMenu* m_menuFile; wxStatusBar* m_statusBar; // Virtual event handlers, overide them in your derived class virtual void OnCloseFrame( wxCloseEvent& event ) { event.Skip(); } virtual void OnExitClick( wxCommandEvent& event ) { event.Skip(); } public: //主窗体构造函数 MainFrameBase( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = _("wxMiniApp"), const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 500,300 ), long style = wxCLOSE_BOX|wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL ); ~MainFrameBase(); };
gui.cpp
#include "gui.h" /////////////////////////////////////////////////////////////////////////// MainFrameBase::MainFrameBase( 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 );//定义窗口最小最大尺寸,这里默认 m_menuBar = new wxMenuBar( 0 ); m_menuFile = new wxMenu(); wxMenuItem* menuFileExit; menuFileExit = new wxMenuItem( m_menuFile, wxID_EXIT, wxString( _("E&xit") ) + wxT('t') + wxT("Alt+X"), wxEmptyString, wxITEM_NORMAL ); m_menuFile->Append( menuFileExit ); m_menuBar->Append( m_menuFile, _("&File") ); this->SetMenuBar( m_menuBar ); wxBoxSizer* mainSizer; mainSizer = new wxBoxSizer( wxVERTICAL ); this->SetSizer( mainSizer ); this->Layout(); m_statusBar = this->CreateStatusBar( 1, wxST_SIZEGRIP, wxID_ANY ); this->Centre( wxBOTH ); // Connect Events,动态事件连接 this->Connect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainFrameBase::OnCloseFrame ) ); this->Connect( menuFileExit->GetId(), wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrameBase::OnExitClick ) ); } MainFrameBase::~MainFrameBase() //析构函数,C++用法 { // Disconnect Events,释放事件连接 this->Disconnect( wxEVT_CLOSE_WINDOW, wxCloseEventHandler( MainFrameBase::OnCloseFrame ) ); this->Disconnect( wxID_ANY, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrameBase::OnExitClick ) ); }
main.h
/********************************************************************* * Name: main.h * Purpose: Declares simple wxWidgets application with GUI * created using wxFormBuilder. * Author: * Created: * Copyright: * License: wxWidgets license (www.wxwidgets.org) * * Notes: Note that all GUI creation code is declared in * gui.h source file which is generated by wxFormBuilder. *********************************************************************/ #ifndef __main__ //防止重复定义main.h #define __main__ // main wxWidgets header file #include <wx/wx.h> // gui classes generated by wxFormBuilder #include "gui.h" //////////////////////////////////////////////////////////////////////////////// // application class declaration 主应用程序定义 //////////////////////////////////////////////////////////////////////////////// class MainApp : public wxApp //相当于主入口,初始化 { public: virtual bool OnInit(); }; // declare global static function wxGetApp() DECLARE_APP(MainApp) //////////////////////////////////////////////////////////////////////////////// // main application frame declaration //////////////////////////////////////////////////////////////////////////////// class MainFrame : public MainFrameBase 重继承主窗体,重定义 { public: MainFrame( wxWindow *parent ); virtual ~MainFrame(); protected: // protected event handlers virtual void OnCloseFrame( wxCloseEvent& event ); virtual void OnExitClick( wxCommandEvent& event ); }; #endif //__main__
main.cpp
/********************************************************************* * Name: main.cpp * Purpose: Implements simple wxWidgets application with GUI * created using wxFormBuilder. * Author: * Created: * Copyright: * License: wxWidgets license (www.wxwidgets.org) * * Notes: Note that all GUI creation code is implemented in * gui.cpp source file which is generated by wxFormBuilder. *********************************************************************/ #include "main.h" // initialize the application IMPLEMENT_APP(MainApp); //////////////////////////////////////////////////////////////////////////////// // application class implementation //////////////////////////////////////////////////////////////////////////////// bool MainApp::OnInit() { SetTopWindow( new MainFrame( NULL ) ); //设为顶层窗体 GetTopWindow()->Show(); //显示 // true = enter the main loop return true; } //////////////////////////////////////////////////////////////////////////////// // main application frame implementation //具体事件函数的实现 //////////////////////////////////////////////////////////////////////////////// MainFrame::MainFrame(wxWindow *parent) : MainFrameBase( parent ) { } MainFrame::~MainFrame() { } void MainFrame::OnCloseFrame(wxCloseEvent& event) { Destroy(); } void MainFrame::OnExitClick(wxCommandEvent& event) { Destroy(); }
附注
编译: F7
DebRun: F5
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算