2011-09-13 45 views
0

我想使用wxWidgets製作一個簡單的基於對話框的GUI。我使用X11/Xlib.h進行圖像捕捉(打印屏幕)。當我使用wxSmith在GUI任何改變(如拖放新的按鈕),因爲它會自動更改按鈕名稱Button1的,Button2的問題開始......Ubuntu中的wxWidgets和X11問題?

Button1 = new wxButton(this, ID_BUTTON1, _("About"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1")); 

問題是,Button1..5已經在規定的Xh :

/* button names. Used as arguments to GrabButton and as detail in ButtonPress 
    and ButtonRelease events. Not to be confused with button masks above. 
    Note that 0 is already defined above as "AnyButton". */ 

#define Button1   1 
#define Button2   2 
#define Button3   3 
#define Button4   4 
#define Button5   5 

我能以某種方式修改的wxWidgets不會自動更改名稱,或者只是添加我的自定義前綴,如somethingButton1?

+0

「當我使用wxSmith(例如拖放新按鈕)更改GUI中的任何內容時,因爲它會自動將按鈕名稱更改爲Button1,Button2 ...」 - 出於好奇,我已經安裝了Code :: Blocks並嘗試使用wxSmith進行拖放操作。這種事情沒有發生。具有自定義名稱的按鈕保留其名稱,新按鈕被命名爲Button {123 ...}。 –

回答

1

您是否正在更改GUI設計器中的var名稱,或直接編輯cpp文件?

如果您在CPP編輯//(*Initialize(PanelName)//*)之間的東西,那麼你做會被消滅(不只是更改按鈕名稱)進行任何更改。

如果您正在查看Resources選項卡(如果您使用Drag'n Drop),您應該看到它,下面是當前所選按鈕(或其他窗口小部件)的屬性。將Var name屬性更改爲myButton1以更改變量名稱。

0

在我看來,可以簡單的寫

myButton1 = new wxButton(this, ID_BUTTON1, _("About"), .... 

我看到你正在使用wxSmith,對代碼塊的快速應用開發(RAD)插件。這意味着您正在依靠計算機程序爲您編寫代碼,這對於所有數十年的努力來說都是不成功的。

我的建議是,最好先:

  1. 深吸一口氣,編寫自己的代碼。你會學到很多!

  2. 選擇另一個RAD。有很多available和一些應該更復雜,適應與X11運行。

  3. 下載wxSmith代碼。做一個全局查找&替換Button1 - > wxSmith_Button1。重建。

+0

是的,但每次我改變一些關於GUI的東西時,我必須這樣做,所以我正在尋找更簡單的解決方案(如果有的話)。 –

+0

請詳細解釋!你必須編寫代碼來「改變某些東西」 - 你不能僅僅希望改變它們。 – ravenspoint

+0

我通過改變設計形式來改變它,例如使用拖放按鈕,而不是編碼。 –