(我使用Qt 4.7,Windows 7,64位)。關於刪除,刪除Qt 4中的小部件和佈局
我創建了一個自定義表。每一行都是帶有小部件的水平佈局。 這些行保存在QList中以方便訪問,也保存在兒童中。行也添加到父窗口小部件中。
如果我調整父控件,我計算出新的大小,刪除了一切,再重新創建它。
我的問題是,我不希望刪除任何部件。只有當我清理桌子時,我纔會這樣做。
因爲我有一個內部的QList和父佈局內的小工具,如何刪除所有控件每一行中,刪除所有的佈局,然後添加那些新的佈局?
如果我這樣做:takeAt(0)爲每個佈局中的每一個元素我有一個QLayoutItem裏面一個小部件...我怎樣才能刪除layoutItem而不刪除插件....我如何刪除小部件不殺死它,不管它是在父母還是在孩子身上?因爲在佈局中有很多刪除方法:removeItem,removeWidget ...,但不是takeWidget ...只是takeAt(),它提供了一個Qlayoutitem。
我嘗試了幾種方法,但我還是看到了小部件無論他們發生了什麼。
問題這一點:
什麼時候一個widget被刪除?如果我從佈局中取出小部件(索引),它是否會被刪除一段時間?如果我在另一個列表中有指向它的指針,它會發生嗎?
RemoveAt移除(指數)不執行小部件的刪除方法?
layout() - > removeAt(widget);只對QGraphicsLayout存在。你的意思可能是layout() - > removeWidget(widget); – Bim
這也是您可以從佈局中刪除小部件而不刪除它的功能。如果您沒有小部件指針,請執行以下操作: QLayoutItem * item = layout-> itemAt(0); QWidget * widget = item-> widget(); if(widget!= NULL)layout-> removeWidget(widget); //如果你想刪除widget,請執行: widget-> setParent(NULL); 刪除小部件; } (格式化不起作用,但您明白了......) – Bim
僅供參考:由於您必須處理內部C++對象,因此在Python中無效。 – darkgaze