wxWidgets界面設計工具DialogBlocks(轉載)

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!"));              }

           便可獲得以下效果:

相關文章
相關標籤/搜索