2017-09-12 66 views
0

我需要的,從佈局清楚我chartViewers,但是當我做,我不能刪除最後一個小部件。 當我測試我的佈局的長度,我得到0,但是小工具仍是這裏的佈局更新後,如圖片:爲什麼佈局,不更新?

enter image description here

我在這裏的代碼時,我刪除了部件和圖

print("proceding to delete chart ", chartName, " at : ", indexGraph) 
currentGraph = self.charts[indexGraph] 
currentWidget = self.chartVs[indexGraph] 

self.chartLayout.removeWidget(currentWidget) 
self.chartVs.remove(currentWidget) 

currentGraph.clearData() 
self.charts.remove(currentGraph) 
self.chartLayout.update() 

#currentWidget.resetCachedContent() 
listGraphs.remove(chartName) 
self.refreshListWithOpt(self.chartTree, listGraphs, 1, optGraphs) 

這裏是我創建的圖表,並將其添加到佈局的代碼:

self.charts.append(chartClass(patientStr, exp)) 

print("\nNew Plot chart ", self.charts[lastIndex].name, " length : ", lastIndex) 

listGraphs.append(self.charts[lastIndex].name) 
print("list Graphs : ", listGraphs) 
self.charts[lastIndex].plotJSON(myData.plot(patientStr, exp)) 

self.chartVs.append(QChartView(self.charts[lastIndex])) 
self.chartVs[lastIndex].setRenderHint(QPainter.Antialiasing) 
self.chartLayout.insertWidget(0, self.chartVs[lastIndex]) 

什麼建議嗎?

+0

這個問題並不清楚。 –

+0

阿祖爾AGMA Ghilas,我的問題是與最後一個控件,當我刪除它,它仍然存在於我的佈局,甚至是所有我做了什麼,直到如今。 –

+1

嘗試:'currentWidget.deleteLater()' – eyllanesc

回答

1

當小部件添加到主插件的默認位置爲0,0,當我們把它添加到這個位置由它處理的佈局,因此,如果我們從佈局中刪除它,它會返回到初始位置,可視化地產生不被刪除的效果,然後解決它我們必須刪除它的部件我們使用的方法deleteLater()

0

有解決方案,我的小部件仍然附加到佈局,即使在removeItem之後。所以解決方案是widgetToDelete.deleteLater()widgetToDelete.setParent(None)

print("proceding to delete chart ", chartName, " at : ", indexGraph) 
currentGraph = self.charts[indexGraph] 
currentWidget = self.chartVs[indexGraph] 

self.chartLayout.removeItem(currentWidgetItem) 
currentWidgetItem.widget().deleteLater() 
#currentWidgetItem.widget().setParent(None) 

self.chartLayout.removeItem(currentWidgetItem) 
self.chartVs.remove(currentWidget) 
self.chartLayout.update() 

#currentWidget.resetCachedContent() 
listGraphs.remove(chartName) 
self.refreshListWithOpt(self.chartTree, listGraphs, 1, optGraphs)