回答
Qt中的許多事情不能被「傳統」去除。而是調用hide()並將其破壞。從QSplitter文檔:
當您隱藏()一個孩子的空間將 其他 孩子之間進行分配。當你再次顯示()時,它將被恢復。
我喜歡Tuminoid的答案。但是,如果您絕對需要刪除它,請嘗試獲取要刪除的小部件,然後在該小部件上調用setParent(NULL)
。這是我最好的猜測。
,如果你想保留的小部件,並把它在其他地方目前還不清楚我的,或者如果你想摧毀該Widget。
銷燬小部件:如果你能 獲得一個指向小部件,你可以簡單地 刪除它。拆分器將 安全地通知其子 被刪除,並將從其自身刪除 。
保留部件:如果你搶 指針到小部件,您可以 簡單地設置其母公司其他一些 部件並將其添加到另一個 小部件的佈局,它會顯示 那裏。這是安全的,因爲QSplitter將被通知一個 其子女正在重新設置。
如果要設置父爲NULL(cjhuitt的答案),要知道,你現在負責清理內存,因爲小部件不再有父。
如果你持有一個指針部件,那麼就刪除它,或者使用deleteLater()如果你想成爲安全起見。
如果你沒有小部件指針,使用了QSplitter ::小部件(INT指數)的功能。然後,您可以使用它的deleteLater()插槽。
如果你沒有小部件指數,但你還是知道小部件的objectName(),然後的QObject :: findChild()是讓小部件指針的唯一途徑。
另一種簡單的方法來防止孩子從窗口小部件入門刪除是使用QSplitter.takeWidget(孩子)。這也是從拆分器中刪除小部件的推薦方式。 (Qt Documentation)
提供一個文檔鏈接takeWidget。 – W55tKQbuRu28Q4xv 2010-11-02 06:48:17
我遇到了同樣的問題。在Qt 4.8中暫時隱藏QSplitter的一個小部件,我只是隱藏它。然而這還不夠,因爲分離手柄仍然可以移動。但是手柄可以訪問和隱藏,以及:
frameA->setVisible(conditionA);
frameB->setVisible(conditionB);
if (!(conditionA && conditionB)) // if only 1 frame is visible
{
splitter->handle(0)->setVisible(false);
}
- 1. 從QGridLayout刪除QWidgets
- 2. 從QLayout中刪除QWidgets?
- 3. 從QSplitter中刪除特定的QWidget
- 4. 如何移動QSplitter?
- 5. 如何從QToolBox獲取子類QWidgets?
- 6. 如何從webapp2_extras.appengine.auth.models.Unique中刪除?
- 7. 如何從子表中刪除從父表中刪除的行?
- 8. 如何在QStack中正確添加QWidgets?
- 9. 多QWidgets
- 10. 如何從iphone中的字符串中刪除刪除/ n/t
- 11. 如何從Oracle SQL中刪除的表中刪除註釋?
- 12. 如何從XML中的foreach中刪除?
- 13. 如何刪除從Outlook
- 14. 如何刪除amp;從URL
- 15. 如何刪除$ _ SERVER從PHP
- 16. 如何從cpanel刪除wordpress
- 17. 如何從TableLayout刪除行?
- 18. 如何從Ubuntu刪除Xen?
- 19. 如何從txt刪除行?
- 20. 如何從Sql刪除「NULL」
- 21. 如何刪除域=從URL
- 22. 如何刪除「 - 」從文本
- 23. 如何從base.lproj刪除Localizable.strings
- 24. 在QLayout中創建和刪除自定義QWidgets時發生內存問題
- 25. 如何從Bitbucket中刪除已刪除的文件?
- 26. 如何從列表中刪除項目而不刪除.remove?
- 27. 如何解決從數據庫中刪除的刪除功能
- 28. 如何通過OpenXML從Excel工作簿中刪除/刪除ExtensionList?
- 29. 如何從DOM中刪除子元素時刪除父元素?
- 30. Gluster從卷中刪除磚失敗,如何刪除磚?
注意,當你設置父爲NULL窗口小部件成爲主窗口...(除非你先隱藏起來。) – 2012-01-22 08:27:57