2017-09-12 9 views
0

レイアウトからChartViewerをクリアする必要がありますが、私が最後のウィジェットを削除することはできません。 私は私のレイアウトの長さをテストするとき、私は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

Azul 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) 
関連する問題