該方法由直接擴展Widget()以允許使用id的控件使用。該id允許可能包含Widget的控件訪問子控件/控件(這可能是您需要它的原因)這也有助於確保子控件正確處理,我不知道如何將控件/控件分配到類似複合控件的控件中,我不知道如何分配控件或組件。擴展的qx.ui.container.Composite(或GroupBox或TabView或...)需要將包含的小部件分配給成員變量,如果需要再次直接引用它們。請記住,當擴展類似Composite的對象(如果你打算經常創建和銷燬它們)作爲你的界面的一部分),你將需要保持對包含的小部件的內部引用。這將參考使用,以便您可以在析構函數後自己清理:
http://qooxdoo.678.n2.nabble.com/Memory-Management-best-practices-in-composites-td5325700.html
上的方法是使用一個成員數組,推動各子部件到陣列中。然後在析構函數中使用this._disposeArray()。當我沒有使用這種技術時,我在基於複合的小部件中被內存泄漏咬傷。 (我有一些需要成爲好公民的長時間運行的web界面)類似Composite類的控件繼承的底層Widget()類實際上保留了它自己的內部數組來執行相同的操作,但它是一個內部實現,因此你會想保持你自己的。)
如果你想使用特定的ID你需要擴展qx.ui.core.Widget(而不是類似Composite的控件)。檢查很多例子在qooxdoo SDK中。以qx.ui.groupbox.GroupBox()爲例。
如果我的理解正確,擴展Widget與類似Composite的類之間的實現的主要區別是在Widgets中使用了id,並且只要通過id添加子控件,將在析構函數中自動「清理」。基於Widget的控件的不利之處在於,他們往往需要更多的精力來規劃它們,而不是類似Composite的控件所採用的代碼並行方法。我經常從一個類似Composite的控件開始,然後將它們更新爲擴展小部件,如果我發現我會重新使用它們。