2016-08-21 65 views
1

我剛開始使用PyQt,我試圖對QGridLayout中的元素進行排序。在下面的代碼中,我將單元格(4,1)中的現有按鈕移動到(0,0)。我產生了困惑,因爲使用removeWidget與否,兩件代碼的行爲完全一致,或者:是removeWidget()必需

myButton = self.myGridLayout.itemAtPosition(4, 1).widget() 
    self.myGridLayout.removeWidget(myButton) 
    self.myGridLayout.addWidget(myButton, 0, 0) 

相同:或

myButton = self.myGridLayout.itemAtPosition(4, 1).widget() 
    self.myGridLayout.addWidget(myButton, 0, 0) 

是PyQt的處理幕後的一切都在那裏的東西,我沒有注意到發生?

謝謝

回答

1

小部件只能屬於一個佈局。在一個小部件被添加到佈局之前,Qt會檢查它是否曾經在佈局中,如果是這樣,它將從當前屬於的任何佈局中移除它。小部件也將自動重新排列到佈局的當前父部件。

一個小部件也不能被添加到同一個佈局兩次 - 但這與上面的情況確實沒什麼不同,所以它的處理方式完全一樣。