[英]wxWidgets: Show a window that was marked hidden in the XRC
我是wxWidgets
和DialogBlocks
。 我有一個使用DialogBlocks創建並保存為XRC文件的表單。 表單的一部分具有一個垂直的wxStaticBoxSizer
,其中放置了兩個wxScrolledWindow
元素。 我只想一次根據要顯示給用戶的數據顯示一個,所以我將其中一個標記為隱藏,而將另一個標記為可見。 當我嘗試切換顯示並顯示XRC中隱藏的窗口小部件並隱藏一個窗口小部件時,我隱藏的窗口小部件消失了,但是我想要顯示的窗口小部件卻不可見。 但是,如果我調整窗口大小,則會出現。 一旦出現,我就可以沒有問題地來回切換。 我嘗試了顯示,啟用,失效,獲取sizer以及調用RecalcSizes
,刷新,布局等多種組合。 我也嘗試了不同的組合方式。 只需調用Show
讓我在兩者之間切換,但是只有在我切換到最初不顯示並調整窗口大小的那個之后。 從我在文檔中看到的。 問題是wxSizer
不會為隱藏的窗口分配空間,但是可以設置一個標志來覆蓋該行為。 我的問題是DialogBlocks沒有公開該功能,所以如果我手動編輯XRC文件,則當我或其他開發人員之一保存一些更改時,所做的修改將丟失。 我可以打電話告訴大小調整器分配空間嗎? 默認的OnResize
處理程序會執行某些操作以使sizer分配空間,但是我不知道這是什么或如何執行。
這是我在文檔中找到的標志:
wxRESERVE_SPACE_EVEN_IF_HIDDEN通常,wxSizers不會為隱藏的窗口或其他項目分配空間。 此標志將覆蓋此行為,以便為窗口分配足夠的空間,即使該窗口不可見。 例如,這使得可以動態顯示和隱藏控件而無需調整父對話框的大小。 自wxWidgets 2.8.8版以來,此功能是新的
不幸的是,DialogBlocks確實不允許您指定此標志。 沒有它,您需要在顯示先前隱藏的控件之后調用Layout()
。 只要您在父級上調用它有足夠的空間來容納現在需要更多空間的孩子(例如,在頂層父級上調用它總是可以工作),這將起作用,但會導致控件明顯轉移,而這可能不是您所需要的想。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.