wxWidgets界面設計工具DialogBlocks // * create by zyzx // * 2009-3-12 // * 轉載請註明來源:http://www.cppblog.com/zyzxhtml
工欲善其事,必先利其器。在MFC上開發,有VS系列強大的可視化工具,基於wx的開發工具雖然沒有VS、QT的界面設計器強大,但在靈活度上VS的界面設計器是無法比的(QT的沒有用過,不作評論)。 若是選擇了wx庫,瞭解幾款基於其上的界面設計工具,會大大提升開發效率。框架
1、wx界面設計工具簡介工具
官方建議的工具集合:http://wiki.wxwidgets.org/Toolspost
在剛開始的時候,我也嘗試過幾款工具(wxFormBuilder、wxDev-C++、wxDesigner等),但後來仍是選擇了DialogBlocks-4.18。對於這些工具的選擇,各有特點。選擇DialogBlocks,主要是由於其靈活度很大,固然缺點就是須要手工寫代碼來結合工具使用。但這點對於熟悉wx之後就再也不是缺點,而是她最大的優勢。開發工具
2、DialogBlocks簡介ui
DialogBlocks官方主頁:http://www.anthemion.co.uk/dialogblocks/spa
3、DialogBlocks入門嚮導設計
安裝完成後,DialogBlocks有幾個實例工程能夠供你們參考。3d
一、新建HelloWorld工程orm
關閉這些後點擊File->New Project進入工程嚮導。
點擊Next進入下一個選擇頁面
Mode中有3個選項: Generate for C++:表示工具並不生成*.xrc(xml格式文件)配置文件,直接將窗口的一些信息(好比樣式、大小、是否可見等等)直接寫在源代碼中,用相應的標記區別,由工具來維護此段代碼區域。若是手工破壞了標記信息,工具將沒法識別。 Generate C++ for XRC:表示工具將窗口信息(…)寫入相應的*.xrc配置文件中,代碼塊中只寫加載這些配置的代碼。這種方式十分適合,界面大小不一致,需靈活配置界面。代碼塊的事件關聯每個窗口控件惟一的ID。 Generate XRC only:表示不生成源代碼,只生成*.xrc配置文件。更靈活的將代碼和界面設計的配置文件分開。代碼塊只須要經過窗口控件ID來控制其行爲。
後面一路next,默認選項便可。 保存工程獲得HelloWorld\HelloWorld.pjd文件,之後只要今後文件打開便可。
二、新建主wxFrame或wxDialog
三、添加其餘控件
修改啓動的主Frame:Main window選項修改成HelloWorld Frame的ID編號。
三、添加其餘控件
好比菜單、工具條、狀態條、窗口裏面的控件元素等等。
注意窗口元素不是隨意添加的,必須先搞清楚wx的窗口元素之間的關係。好比:wxFrame/wxDialog直接包容wxMenuBar、wxToolBar、wxStatusBar,而wxTextCtrl、wxComboBox、wxStaticText等等最好創建在wxBoxSizer以內。 wxBoxSizer是wx的特點之一,它能夠對其包含的控件進行自動調整。固然須要設定其自動調整屬性。以上均使用默認的屬性。
4、HelloWorld的VS工程配置
完成以上部分就說明最基本的界面框架已經作好了。咱們還須要新建基於Win32的空HelloWorld工程,將DialogBlocks生成的*.h *.cpp文件添加HelloWorld工程中去。
按照上一篇關於Win32部分的配置來設置本工程。
編譯運行(別忘了把wx庫的*.dll文件…)結果會報出wxWidgets Assert忽略便可,緣由是上面創建的wxToolBar\Tool沒有找到對應的圖標,把圖標添加進去並設定wx資源加載路徑便可。
5、綁定控件事件控制
在DialogBlock中選中wxButton:ID_BUTTON1切換右邊視圖到Event handlers,點選BUTTON_CLICK事件,並保存。綁定事件有兩種方式,DialogBlocks採用的是靜態綁定的方式,還一種是採用動態綁定事件。
再找到HelloWorld類,並添加頭文件#include <wx/msgdlg.h> void HelloWorld::OnButton1Click( wxCommandEvent& event ) { wxMessageBox(wxT("Hello World!\r\n單擊了Button1Click!")); }
便可獲得以下效果: