免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
[wxWidgets][使用wxFormBuilder設(shè)計(jì)XRC文件快速開發(fā)界面]




場(chǎng)景:

1.wxWidgets是一個(gè)優(yōu)秀的界面庫,它的xrc界面布局格式也是很優(yōu)秀的,可以使用類似mfc的所見即所得的設(shè)計(jì)方式,我發(fā)現(xiàn)它和xcode的interface builder的理念如出一轍。

都是界面與業(yè)務(wù)分離,界面與業(yè)務(wù)動(dòng)態(tài)綁定。


2.快速開發(fā)小軟件時(shí),使用wxFormBuilder來設(shè)計(jì)好界面,生成XRC文件,當(dāng)然不想給別人看到xrc文件的內(nèi)容也可以用工具編譯為二進(jìn)制文件,參考wx.chm文檔吧。之后程序載入界面再綁定行為很優(yōu)雅和高效。wxFormBuilder設(shè)計(jì)好之后按f5直接看運(yùn)行效果很贊。

3.博客導(dǎo)出下載工具 就是用wxFormBuilder來設(shè)計(jì)界面的,xrc文件本身不應(yīng)該手動(dòng)編輯,因?yàn)樗慕Y(jié)構(gòu)化信息比較多,用軟件代為生成就最適合不過了。


文件1: wxFormBuilder生成的xrc文件另存為blog.xrc:


  1. <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>  
  2. <resource xmlns="http://www.wxwindows.org/wxxrc" version="2.3.0.1">  
  3.     <object class="wxFrame" name="MyFrame1">  
  4.         <style>wxDEFAULT_FRAME_STYLE|wxTAB_TRAVERSAL</style>  
  5.         <size>466,300</size>  
  6.         <bg>#ffffff</bg>  
  7.         <title>博客備份導(dǎo)出(infoworld)</title>  
  8.         <centered>1</centered>  
  9.         <aui_managed>0</aui_managed>  
  10.         <object class="wxBoxSizer">  
  11.             <orient>wxVERTICAL</orient>  
  12.             <object class="spacer">  
  13.                 <option>0</option>  
  14.                 <flag></flag>  
  15.                 <border>5</border>  
  16.                 <size>0,20</size>  
  17.             </object>  
  18.             <object class="sizeritem">  
  19.                 <option>0</option>  
  20.                 <flag>wxEXPAND</flag>  
  21.                 <border>0</border>  
  22.                 <object class="wxBoxSizer">  
  23.                     <orient>wxHORIZONTAL</orient>  
  24.                     <object class="sizeritem">  
  25.                         <option>0</option>  
  26.                         <flag>wxALL</flag>  
  27.                         <border>5</border>  
  28.                         <object class="wxStaticText" name="m_staticText2">  
  29.                             <label>博客網(wǎng)址:</label>  
  30.                             <wrap>-1</wrap>  
  31.                         </object>  
  32.                     </object>  
  33.                     <object class="sizeritem">  
  34.                         <option>1</option>  
  35.                         <flag>wxALL</flag>  
  36.                         <border>5</border>  
  37.                         <object class="wxTextCtrl" name="m_textCtrl1">  
  38.                             <style>wxSIMPLE_BORDER</style>  
  39.                             <value></value>  
  40.                         </object>  
  41.                     </object>  
  42.                     <object class="sizeritem">  
  43.                         <option>0</option>  
  44.                         <flag>wxALL</flag>  
  45.                         <border>5</border>  
  46.                         <object class="wxButton" name="m_button1">  
  47.                             <label>備份</label>  
  48.                             <default>0</default>  
  49.                         </object>  
  50.                     </object>  
  51.                 </object>  
  52.             </object>  
  53.             <object class="sizeritem">  
  54.                 <option>0</option>  
  55.                 <flag>wxEXPAND</flag>  
  56.                 <border>5</border>  
  57.                 <object class="wxBoxSizer">  
  58.                     <orient>wxHORIZONTAL</orient>  
  59.                     <object class="sizeritem">  
  60.                         <option>0</option>  
  61.                         <flag>wxALL</flag>  
  62.                         <border>5</border>  
  63.                         <object class="wxStaticText" name="m_staticText3">  
  64.                             <label>輸出目錄:</label>  
  65.                             <wrap>-1</wrap>  
  66.                         </object>  
  67.                     </object>  
  68.                     <object class="sizeritem">  
  69.                         <option>1</option>  
  70.                         <flag>wxALL</flag>  
  71.                         <border>5</border>  
  72.                         <object class="wxTextCtrl" name="m_textCtrl6">  
  73.                             <style>wxTE_READONLY|wxSIMPLE_BORDER</style>  
  74.                             <value></value>  
  75.                         </object>  
  76.                     </object>  
  77.                     <object class="sizeritem">  
  78.                         <option>0</option>  
  79.                         <flag>wxALL</flag>  
  80.                         <border>5</border>  
  81.                         <object class="wxButton" name="m_button2">  
  82.                             <label>瀏覽</label>  
  83.                             <default>0</default>  
  84.                         </object>  
  85.                     </object>  
  86.                 </object>  
  87.             </object>  
  88.             <object class="sizeritem">  
  89.                 <option>0</option>  
  90.                 <flag>wxALL</flag>  
  91.                 <border>5</border>  
  92.                 <object class="wxStaticText" name="m_staticText21">  
  93.                     <label>輸出窗口:</label>  
  94.                     <wrap>-1</wrap>  
  95.                 </object>  
  96.             </object>  
  97.             <object class="sizeritem">  
  98.                 <option>1</option>  
  99.                 <flag>wxEXPAND</flag>  
  100.                 <border>5</border>  
  101.                 <object class="wxBoxSizer">  
  102.                     <orient>wxHORIZONTAL</orient>  
  103.                     <object class="sizeritem">  
  104.                         <option>1</option>  
  105.                         <flag>wxALL|wxEXPAND</flag>  
  106.                         <border>5</border>  
  107.                         <object class="wxTextCtrl" name="m_textCtrl2">  
  108.                             <style>wxTE_MULTILINE|wxSIMPLE_BORDER</style>  
  109.                             <size>466,200</size>  
  110.                             <value></value>  
  111.                         </object>  
  112.                     </object>  
  113.                 </object>  
  114.             </object>  
  115.         </object>  
  116.         <object class="wxStatusBar" name="m_statusBar1">  
  117.             <style>wxST_SIZEGRIP</style>  
  118.             <fields>1</fields>  
  119.         </object>  
  120.         <object class="wxMenuBar" name="m_menubar1">  
  121.             <label>MyMenuBar</label>  
  122.             <object class="wxMenu" name="m_menu1">  
  123.                 <label>文件</label>  
  124.                 <object class="wxMenuItem" name="wxID_EXIT">  
  125.                     <label>退出\tAlt+X</label>  
  126.                     <help></help>  
  127.                 </object>  
  128.             </object>  
  129.             <object class="wxMenu" name="m_menu2">  
  130.                 <label>幫助</label>  
  131.                 <object class="wxMenuItem" name="kMenuFeedback">  
  132.                     <label>反饋\tF1</label>  
  133.                     <help></help>  
  134.                 </object>  
  135.             </object>  
  136.         </object>  
  137.     </object>  
  138. </resource>  

文件2:main.cpp調(diào)用載入xrc和綁定事件,以下調(diào)用python部分可以刪除,無關(guān)。


  1. bool MyApp::OnInit()  
  2. {  
  3.     if (!wxApp::OnInit())  
  4.     {  
  5.         return false;  
  6.     }  
  7.     Py_Initialize();  
  8.   PyObject* obj = Py_InitModule("redirection", RedirectionMethods);  
  9.   assert(obj);  
  10.   PyRun_SimpleString("\  
  11. import redirection\n\  
  12. import sys\n\  
  13. class StdoutCatcher:\n\  
  14.     def write(self, stuff):\n\  
  15.         redirection.stdoutredirect(stuff)\n\  
  16. sys.stdout = StdoutCatcher()");  
  17.   
  18.   wxInitAllImageHandlers();  
  19.   wxXmlResource::Get()->InitAllHandlers();  
  20.     
  21. //載入U(xiǎn)i目錄下的所有xrc文件  
  22.   wxString ui_dir = GetAppRunDirectory()+wxT("/Ui");  
  23.   wxXmlResource::Get()->LoadAllFiles(ui_dir);  
  24.   
  25.   MyFrame *frame = new MyFrame(NULL);  
  26.   bool loaded = wxXmlResource::Get()->LoadFrame(frame, NULL, "MyFrame1");  
  27.   assert(loaded);  
  28.   frame->Init();  
  29.   frame->Show(true);  
  30.   return true;  
  31. }  
  32.   
  33. //1.創(chuàng)建MyFrame之后動(dòng)態(tài)綁定事件  
  34. void MyFrame::Init()  
  35. {  
  36.      backup_button_ =  XRCCTRL(*this, "m_button1", wxButton);  
  37.    backup_button_->Bind(wxEVT_COMMAND_BUTTON_CLICKED,  
  38.         wxCommandEventHandler(MyFrame::OnBackup), this, XRCID("m_button1"));  
  39.    XRCCTRL(*this, "m_button2", wxButton)->Bind(wxEVT_COMMAND_BUTTON_CLICKED,  
  40.         wxCommandEventHandler(MyFrame::OnBrowse), this, XRCID("m_button2"));  
  41.   
  42.      pText_ = XRCCTRL(*this, "m_textCtrl2", wxTextCtrl);  
  43.   
  44.    url_ = XRCCTRL(*this, "m_textCtrl1", wxTextCtrl);  
  45.    output_ = XRCCTRL(*this, "m_textCtrl6", wxTextCtrl);  
  46.   
  47.    Connect(wxXmlResource::GetXRCID(wxT("kMenuFeedback")), wxEVT_COMMAND_MENU_SELECTED,   
  48.     wxCommandEventHandler( MyFrame::OnFeedback ) );  
  49.    Connect(wxXmlResource::GetXRCID(wxT("wxID_EXIT")), wxEVT_COMMAND_MENU_SELECTED,   
  50.     wxCommandEventHandler( MyFrame::OnExit ) );   
  51.   
  52.    wxIcon icon;  
  53.    icon.LoadFile(wxT("blog.ico"),wxBITMAP_TYPE_ICO ,32,32);  
  54.    SetIcon(icon);  
  55.   
  56.    gFrame = this;  
  57. }  

注意:載入xrc后,wx會(huì)自動(dòng)生成一個(gè)控件對(duì)應(yīng)的id,這時(shí)候用wxXmlResource::GetXRCID(wxT("kMenuFeedback"))通過name來獲取id即可。


本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
如何使用wxPython設(shè)計(jì)gui
極易上手的可視化wxPython GUI構(gòu)建工具(wxFormBuilder)
wxGlade: a GUI builder for wxWidgets/wxPython
Iframe自適應(yīng)高度
wxFormBuilder摸索
GstBus SubSystem
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服